Hallo,
ich habe ein etwas verzwicktes Problem:
Bericht
-PersonID
-Datum
Anwesenheit
-PersonID
-DatumVon
-DatumBis
Es wird für jede Person einer oder mehrere Zeiträume erfasst. Bsp.:
Anwesenheit:
Bericht:
Und das Abfrageergebnis, das ich gerne hätte ist:
Also, er soll den Bericht zu dem Eintrag anzeigen, in dessen Bereich er erstellt wurde. Wurde in disem Bereich kein bericht erstellt, soll er [NULL] ausgeben.
Ich habe es mit folgendem versucht:
[Highlight=sql]SELECT PersonID, DatumVon, DatumBis
FROM Anwesenheit LEFT JOIN Bericht ON Anwesenheit.PersonID=Bericht.PersonID
WHERE Bericht.Datum BETWEEN Anwesenheit.DatumVon AND Anwesenheit.DatumBis[/highlight]
Das Problem ist, dass ich dann das bekomme:
Was mache ich hier falsch?
Ich sag schonmal Danke für die Tips!
ich habe ein etwas verzwicktes Problem:
Bericht
-PersonID
-Datum
Anwesenheit
-PersonID
-DatumVon
-DatumBis
Es wird für jede Person einer oder mehrere Zeiträume erfasst. Bsp.:
Anwesenheit:
PersonID | DatumVon | DatumBis |
1 | 01.01.2012 | 01.03.2012 |
2 | 01.01.2012 | 01.05.2012 |
1 | 01.06.2012 | 01.08.2012 |
PersonID | Datum |
1 | 01.07.2012 |
2 | 01.03.2012 |
PersonID | DatumVon | DatumBis | Bericht Datum |
1 | 01.01.2012 | 01.03.2012 | |
2 | 01.01.2012 | 01.05.2012 | 01.03.2012 |
1 | 01.06.2012 | 01.08.2012 | 01.07.2012 |
Ich habe es mit folgendem versucht:
[Highlight=sql]SELECT PersonID, DatumVon, DatumBis
FROM Anwesenheit LEFT JOIN Bericht ON Anwesenheit.PersonID=Bericht.PersonID
WHERE Bericht.Datum BETWEEN Anwesenheit.DatumVon AND Anwesenheit.DatumBis[/highlight]
Das Problem ist, dass ich dann das bekomme:
PersonID | DatumVon | DatumBis | Bericht Datum |
1 | 01.01.2012 | 01.03.2012 | 01.07.2012 |
2 | 01.01.2012 | 01.05.2012 | 01.03.2012 |
1 | 01.06.2012 | 01.08.2012 | 01.07.2012 |
Ich sag schonmal Danke für die Tips!
Comment