PDA

Vollständige Version anzeigen : Abfrageproblem


Franz Rührnößl
05.05.2001, 07:55
Hallo!
In meiner Spielerdatenbank verwalte ich die An- und Abmeldungen der Spieler über ein Unterformular bzw. Unterdatenblatt, das über den Schlüssel "Passnummer" verbunden ist.
Wenn ich nun über das Abmeldedatum alle abgemeldeten SPieler abfrage, bekomme ich z.B. bei einem Spieler, der bei 3 verschiedenen Vereinen war und überall abgemeldet wurde, natürlich eine dreifache Anzeige. Ich möchte aber nur den letzten Datensatz dieses Spielers und damit auch den letzten Verein, für den er gespielt hat, angezeigt bekommen.
Mit welchem Kriterium geht das? Da bin ich total überfragt, weil ja bei einem Spieler 4 Datensätze vorhanden sein können, bei einem anderen noch mehr und bei den meisten nur einer.

Für Hilfestellungen sehr dankbar,

Franz

marmic55
05.05.2001, 10:47
Hallo Franz,

hier ein Lösungsansatz:

SELECT TOP 1 Mannsch_Spieljahr.NrSpieler_Mannschaft_Spieljahr, Mannsch_Spieljahr.Eintritt, Mannsch_Spieljahr.Austritt
FROM Mannsch_Spieljahr
WHERE (((Mannsch_Spieljahr.NrSpieler_Mannschaft_Spieljahr)=40))
ORDER BY Mannsch_Spieljahr.Eintritt DESC;


Das betreffende Datumsfeld wird hier absteigend sortiert.

Gruß Michael

Franz Rührnößl
05.05.2001, 13:05
Danke für den lösungsansatz, ich habe ihn ausprobiert, er führt aber nicht zur Lösung meines Problems. Ich muss daher wohl noch einmal meine Ausgangslage schildern:
In einer Spielerdatenbank werden in einem Unterdatenblatt(Tabelle) die An- und Abmeldedaten und der jeweilige Verein gespeichert. Verknüpft sind die Tabellen über den Schlüssel "Passnr", der jeden Spieler eindeutig indentifiziert. Nun sollte eine Abfrage erstellt werden, die alle Spieler anzeigt, die zwar derzeit abgemeldet sind, aber einmal für irgendeinen Verein gespielt haben(um sie eventuell zu reaktivieren)! Diese Abfrage ist ja kein Problem, ich gebe beim "Abmeldedatum" das kriterium "Ist nicht null" ein, und schon habe ich alle abgemeldeten Spieler. Das Problem sind nun aber Spieler die in ihrer Laufbahn bei mehreren Vereinen gemeldet waren und wieder abgemeldet wurden. Diese scheinen in der Abfrage ja nach der Zahl der Vereinswechsel 2x, 3x oder sogar 10x auf. Ich möchte nunmehr die Abfrage so definieren, dass jeder abgemeldete Spieler nur 1x aufscheint, und zwar mit seinem letzten Verein, für den er gespielt hat, bzw. mit dem jüngsten Abmeldedatum. Ich habe in der Abfrage die Felder "Passnr", "Vorname", "Nachname" aus der 'TAB_Adressen' und die Felder "Verein" und "abmelde_Datum" aus der Untertabelle "TAB_Spielberechtigung". Die SQL, die wie gesagt manche Spieler mehrfach anzeigt, lautet wie folgt:
SELECT TAB_Adressen.Passnr, TAB_Adressen.Nachname, TAB_Adressen.Vorname, TAB_Spielberechtigung.abmelde_Datum
FROM TAB_Adressen INNER JOIN TAB_Spielberechtigung ON TAB_Adressen.Passnr = TAB_Spielberechtigung.Passnr
WHERE (((TAB_Spielberechtigung.abmelde_Datum) Is Not Null));

Vielleicht kann mir jetzt jemand weiterhelfen!

Danke,
Franz

marmic55
05.05.2001, 15:21
Hallo Franz,

hier noch eine zweite Lösung (angezeigt werden ALLE Spieler).
Ich habe vergessen, das Kriterium mit einzubauen (Nicht Ist Null).
Müsste aber ansonsten klappen.
Wie gesagt, ich hab das so verstanden, dass Du im Unterdatenblatt (was steht im Haupt-Datenblatt) alle Spieler mit Austrittsdatum, allerdings je Spieler nur 1 X, anzeigen lassen willst:


SELECT TAB_Adressen.Passnr, TAB_Adressen.Nachname, TAB_Adressen.Vorname, Max(TAB_Spielberechtigung.abmelde_Datum) AS [Max von abmelde_Datum]
FROM TAB_Adressen RIGHT JOIN TAB_Spielberechtigung ON TAB_Adressen.Passnr = TAB_Spielberechtigung.Passnr
GROUP BY TAB_Adressen.Passnr, TAB_Adressen.Nachname, TAB_Adressen.Vorname
ORDER BY TAB_Adressen.Nachname;


Gruß

Michael