Ich habe ein Problem bei einer Abfrage, doch zunächst die Ausgangssituation:
Thema: Zimmerreservierung
2 Tabellen: "Zimmer" und "Reservierungen"
Zimmer enthält z.B. ZimmerID (PK, Fremdschlüssel in Reservierungen) Zimmerart, .... und Reservierungen enthält ReservierungsID, ZimmerID (s.o.), Buchungsbeginn, Buchungsende
Gegeben seien ein Anfangs- und Enddatum. Ich möchte nun alle Zimmer ausgeben, die in diesem Zeitraum NICHT reserviert sind, sprich frei sind.
Folgendes habe ich derzeit:
"reservID IS null" -> damit die Zimmer ausgegeben werden, die niemals gebucht wurden, also zwingend frei sind.
Das ganze klappt nicht, es werden auch die Zimmer ausgegeben, die eigentlich schon reserviert sind.
Ich denke das hat mit dem JOIN zu tun, da in der virtuellen Tabelle 1 Zimmer nicht zwingend nur 1x vorkommt. ich müsste ihm also klarmachen, dass der Abgleich des An-/Abreisedatums niemals negativ ausfallen darf, auch nicht bei einem der mehreren Datensätze zum jeweiligen Zimmer.
Kann ich das Problem anders lösen? Evtl. mit einem Subselect? Bitte um Hilfe, da ich verzweifle
Thema: Zimmerreservierung
2 Tabellen: "Zimmer" und "Reservierungen"
Zimmer enthält z.B. ZimmerID (PK, Fremdschlüssel in Reservierungen) Zimmerart, .... und Reservierungen enthält ReservierungsID, ZimmerID (s.o.), Buchungsbeginn, Buchungsende
Gegeben seien ein Anfangs- und Enddatum. Ich möchte nun alle Zimmer ausgeben, die in diesem Zeitraum NICHT reserviert sind, sprich frei sind.
Folgendes habe ich derzeit:
Code:
SELECT DISTINCT z.zimmerID, z.art FROM zimmer z
LEFT JOIN reservierungen r ON (z.zimmerID = r.zimmerID) WHERE ((r.reservID IS null)
OR (([Anreisedatum] >= reservEnd) OR ([Abreisedatum] <= reservAnf))) AND ("Doppelzimmer" = z.art)
"reservID IS null" -> damit die Zimmer ausgegeben werden, die niemals gebucht wurden, also zwingend frei sind.
Das ganze klappt nicht, es werden auch die Zimmer ausgegeben, die eigentlich schon reserviert sind.
Ich denke das hat mit dem JOIN zu tun, da in der virtuellen Tabelle 1 Zimmer nicht zwingend nur 1x vorkommt. ich müsste ihm also klarmachen, dass der Abgleich des An-/Abreisedatums niemals negativ ausfallen darf, auch nicht bei einem der mehreren Datensätze zum jeweiligen Zimmer.
Kann ich das Problem anders lösen? Evtl. mit einem Subselect? Bitte um Hilfe, da ich verzweifle
