Hallo, ich habe mein Problem in eine (hoffentlich) allgemeinverständliche Version übersetzt:
ich habe 3 Tabellen, in Tabelle A stehen alle Personen und ihr Reiseindex drin. Der Reiseindex besteht aus einem Kürzel des Reiseunternehmens und einer Nummer zB tui_197399). In Tabelle B stehen nur die letzten Reiseindexe bestimmter Personen der Gesellschaft tui (die Person an sich steht in Tabelle B leider nicht drin). Ich möchte nun alle Einträge von Tabelle B (was die letzte Reise ist) und alle vorherigen Reisen aus Tabelle A (dh Person + Index). Außerdem möchte ich den Zeitraum ab 01.01.2016 beschränken, das steckt in Tabelle C drin. Tabelle C kann ich über die Person Joinen.
Ich bin bisher so weit:
SELECT
A.Person,
A.Reiseindex,
C.Datum,
B.Reiseindex AS Reiseindex01
FROM A
LEFT JOIN C
ON A.Person = C.Person
LEFT JOIN B
ON A.Reiseindex = B.Reiseindex
WHERE
C.Datum between '01.01.2016' AND Current_date
AND A.Person IN
(SELECT A.Person
FROM A
WHERE SUBSTR(A.Reiseindex,1,3) = 'tui' )
Meine Überlegungen und Problemchen bisher:
- so wie es jetzt ist, bekomme ich alle Personen, die mit 'tui' gereist sind und alle vorherigen Reisen dazu; was zu viele Personen sind, da sich in Tabelle A auch Einträge mit tui befinden, die in Tabelle B nicht enthalten sind.
- leider fehlt die Auswahl nach Tabelle B; wenn ich WHERE SUBSTR(A.Reiseindex,1,3) = 'tui' durch WHERE SUBSTR(B.Reiseindex,1,3) = 'tui' ersetze, funktioniert die Abfrage leider nicht, weil ich dann nur wieder den Eintrag von Tabelle B bekomme und nicht auch die von Tabelle A
- ein inner Join zwischen Tabelle A und B bringt nichts, da ich dann nur wieder die letzte Reise von Tabelle B bekomme
Ich hoffe meine Frage ist verständlich und nicht zu lang
Vg Tehanu
ich habe 3 Tabellen, in Tabelle A stehen alle Personen und ihr Reiseindex drin. Der Reiseindex besteht aus einem Kürzel des Reiseunternehmens und einer Nummer zB tui_197399). In Tabelle B stehen nur die letzten Reiseindexe bestimmter Personen der Gesellschaft tui (die Person an sich steht in Tabelle B leider nicht drin). Ich möchte nun alle Einträge von Tabelle B (was die letzte Reise ist) und alle vorherigen Reisen aus Tabelle A (dh Person + Index). Außerdem möchte ich den Zeitraum ab 01.01.2016 beschränken, das steckt in Tabelle C drin. Tabelle C kann ich über die Person Joinen.
Ich bin bisher so weit:
SELECT
A.Person,
A.Reiseindex,
C.Datum,
B.Reiseindex AS Reiseindex01
FROM A
LEFT JOIN C
ON A.Person = C.Person
LEFT JOIN B
ON A.Reiseindex = B.Reiseindex
WHERE
C.Datum between '01.01.2016' AND Current_date
AND A.Person IN
(SELECT A.Person
FROM A
WHERE SUBSTR(A.Reiseindex,1,3) = 'tui' )
Meine Überlegungen und Problemchen bisher:
- so wie es jetzt ist, bekomme ich alle Personen, die mit 'tui' gereist sind und alle vorherigen Reisen dazu; was zu viele Personen sind, da sich in Tabelle A auch Einträge mit tui befinden, die in Tabelle B nicht enthalten sind.
- leider fehlt die Auswahl nach Tabelle B; wenn ich WHERE SUBSTR(A.Reiseindex,1,3) = 'tui' durch WHERE SUBSTR(B.Reiseindex,1,3) = 'tui' ersetze, funktioniert die Abfrage leider nicht, weil ich dann nur wieder den Eintrag von Tabelle B bekomme und nicht auch die von Tabelle A
- ein inner Join zwischen Tabelle A und B bringt nichts, da ich dann nur wieder die letzte Reise von Tabelle B bekomme
Ich hoffe meine Frage ist verständlich und nicht zu lang
Vg Tehanu