Hi,
ich suche mal wieder ein SQL Statement. Und zwar habe ich folgende Tabellenstruktur:
Kursveranstaltung:
Besuchte_Kursveranstaltung:
Kursveranstaltung wird u. a. ein Datum (INT) und eine Dazugehörige ID gespeichert (und sonst noch andere Sachen, welche hier aber nicht relevant sind). In Besuchte_Kursveranstaltungen wird erfasst welches Elternteil (EID) an welcher Kursveranstaltung (KVID) teilgenommen hat.
Ich benötige jetzt ein SQL-Statement, welches mir ein ResultSet mit allen Datensätze der Tabelle Elternteil zurückgibt, deren letzter Kursbesuch vor einem bestimmten Datum liegt. Als Beispiel mal der 31.07.2006. Mit den Daten von oben, sollte ich also den Datensatz von der EID 1 zurückbekommen.
Das habe ich mit folgenden Statement versucht
SELECT * FROM Elternteil WHERE EID IN
(SELECT EID AS old FROM Besuchte_Kursveranstaltung WHERE KVID IN
(SELECT KVID FROM Kursveranstaltung WHERE 20063107 >
(SELECT MAX(Datum) FROM Kursveranstaltung WHERE KVID IN
(SELECT KVID From Besuchte_Kursveranstaltung WHERE EID = old))))
was aber nicht funktioniert, da er die Spalte old im letzten Subselect nicht kennt. Momentan sehe ich zwei Lösungsansätze, für die ich aber eure Hilfe bräuchte
a) Wie kann ich in einem Subselect auf einen Wert eines "übergeordnetem" Selects zugreifen?
b) Sehe ich den Wald vor lauter Bäumen nicht und es geht anders und/oder einfacher!?
[edit] irgendwie glaub ich, dass mein Ansatz komplett falsch ist :cry:
ich suche mal wieder ein SQL Statement. Und zwar habe ich folgende Tabellenstruktur:
Kursveranstaltung:
Code:
Datum KVID
20060801 1
20060720 2
20060710 3
20060701 4
Besuchte_Kursveranstaltung:
Code:
EID KVID
1 1
1 2
2 2
1 3
2 3
1 4
Kursveranstaltung wird u. a. ein Datum (INT) und eine Dazugehörige ID gespeichert (und sonst noch andere Sachen, welche hier aber nicht relevant sind). In Besuchte_Kursveranstaltungen wird erfasst welches Elternteil (EID) an welcher Kursveranstaltung (KVID) teilgenommen hat.
Ich benötige jetzt ein SQL-Statement, welches mir ein ResultSet mit allen Datensätze der Tabelle Elternteil zurückgibt, deren letzter Kursbesuch vor einem bestimmten Datum liegt. Als Beispiel mal der 31.07.2006. Mit den Daten von oben, sollte ich also den Datensatz von der EID 1 zurückbekommen.
Das habe ich mit folgenden Statement versucht
SELECT * FROM Elternteil WHERE EID IN
(SELECT EID AS old FROM Besuchte_Kursveranstaltung WHERE KVID IN
(SELECT KVID FROM Kursveranstaltung WHERE 20063107 >
(SELECT MAX(Datum) FROM Kursveranstaltung WHERE KVID IN
(SELECT KVID From Besuchte_Kursveranstaltung WHERE EID = old))))
was aber nicht funktioniert, da er die Spalte old im letzten Subselect nicht kennt. Momentan sehe ich zwei Lösungsansätze, für die ich aber eure Hilfe bräuchte
a) Wie kann ich in einem Subselect auf einen Wert eines "übergeordnetem" Selects zugreifen?
b) Sehe ich den Wald vor lauter Bäumen nicht und es geht anders und/oder einfacher!?
[edit] irgendwie glaub ich, dass mein Ansatz komplett falsch ist :cry: