Hallo,
ich habe eine Datenbank, in der Datensätze ähnlich wie in einer Orderstruktur abgelegt sind. Als "Ordner" fungieren ID-Nummern. Jede ID-Nummer kann mehrere Vorgänger haben (analog einem Unterverzeichnis) und jeder Vorgänger kann wiederum mehrere Datensätze haben, die auch gleich heißen können. Die nachfolgend umschriebene Abfrage (stark vereinfacht und mit geänderten Namen) ergibt immer mehrere Datensätze für die Spalte LFD_NR. Ich möchte aber für jede LFD_NR immer nur den Datensatz mit der größten ID-Nummer.
Die Vorgänger jeder ID-Nummer sind in einer eigenen Tabelle abgelegt (jede ID ist auch ihr eigener Vorgänger):
Beispiel Tabelle PFAD:
Die eigentlichen Datensätze (LFD_NR) stehen in einer anderen Tabelle:
Beispiel Tabelle DATEN:
Die ID, mit der begonnen werden soll, hole ich aus einer dritten Tabelle:
Beispiel Tabelle STAMM:
Die Verknüpfung erfolgt über die ID, der Anwender gibt mittels Parameterabfrage "Nummer" und "Version" vor. Verknüpft wird mit INNER JOIN, wobei STAMM.ID = PFAD.ID und PFAD.Vorgänger = DATEN.ID
Wenn ich so abfrage, bekomme ich im obigen Beispiel (sortiert):
Ich möchte aber:
Es soll also jede LFD_NR nur einmal vorkommen und zwar nur der Datensatz mit der jeweils höchsten ID-Nummer.
Ich google seit zwei Tagen rauf und runter wegen einer passenden Lösung, aber entweder habe ich nichts gefunden oder ich verstehe nicht genug von SQL, um es zu kapieren (trifft wohl eher zu). Kann mir jemand helfen?
Vielen Dank im Voraus!
ich habe eine Datenbank, in der Datensätze ähnlich wie in einer Orderstruktur abgelegt sind. Als "Ordner" fungieren ID-Nummern. Jede ID-Nummer kann mehrere Vorgänger haben (analog einem Unterverzeichnis) und jeder Vorgänger kann wiederum mehrere Datensätze haben, die auch gleich heißen können. Die nachfolgend umschriebene Abfrage (stark vereinfacht und mit geänderten Namen) ergibt immer mehrere Datensätze für die Spalte LFD_NR. Ich möchte aber für jede LFD_NR immer nur den Datensatz mit der größten ID-Nummer.
Die Vorgänger jeder ID-Nummer sind in einer eigenen Tabelle abgelegt (jede ID ist auch ihr eigener Vorgänger):
Beispiel Tabelle PFAD:
Code:
ID Vorgänger
21793 21030
21793 21031
21793 21032
21793 21033
21793 21793
Die eigentlichen Datensätze (LFD_NR) stehen in einer anderen Tabelle:
Beispiel Tabelle DATEN:
Code:
LFD_NR ID
10 21030
10a 21030
20 21030
30 21030
40 21030
50 21030
10 21031
10a 21031
20 21031
40 21031
10 21032
50 21032
20 21793
40 21793
50 21793
Beispiel Tabelle STAMM:
Code:
Nummer Version ID
123456 5 21793
Die Verknüpfung erfolgt über die ID, der Anwender gibt mittels Parameterabfrage "Nummer" und "Version" vor. Verknüpft wird mit INNER JOIN, wobei STAMM.ID = PFAD.ID und PFAD.Vorgänger = DATEN.ID
Wenn ich so abfrage, bekomme ich im obigen Beispiel (sortiert):
Code:
LFD_NR ID
10 21030
10 21031
10 21032
10a 21030
10a 21031
20 21030
20 21031
20 21793
30 21030
40 21030
40 21301
40 21793
50 21030
50 21032
50 21793
Ich möchte aber:
Code:
LFD_NR ID
10 21032
10a 21031
20 21793
30 21030
40 21793
50 21793
Es soll also jede LFD_NR nur einmal vorkommen und zwar nur der Datensatz mit der jeweils höchsten ID-Nummer.
Ich google seit zwei Tagen rauf und runter wegen einer passenden Lösung, aber entweder habe ich nichts gefunden oder ich verstehe nicht genug von SQL, um es zu kapieren (trifft wohl eher zu). Kann mir jemand helfen?
Vielen Dank im Voraus!