Ich arbeite derzeit an einem Hotel Buchungsservice und ich möchte alle freien Zimmer für einen bestimmten Zimmertyp und Hotel für einen bestimmten Zeitraum zeigen. Ich habe eine scheinbar funktionierende Anfrage gefunden, bis mir aufgefallen ist: Wenn ein Zimmer überhaupt keine Reservierung hat, funktioniert es nicht.SQL für die Suche nach freien Zimmern in einem bestimmten Zeitraum
SELECT DISTINCT r.id,
r.num,
r.NAME,
h.NAME,
h.city,
h.country
FROM room r
JOIN hotel h
ON r.hotel_id = h.id
JOIN room_type rt
ON r.room_type_id = rt.id
WHERE r.id NOT IN (SELECT room_id
FROM reservation
WHERE ('$from' BETWEEN start_date AND end_date)
OR (start_date BETWEEN '$from' AND '$to')
OR '$from' = start_date)
AND $roomtype = rt.id
AND $hotel = h.id
Diese Abfrage wird in einem PHP-Skript verwendet werden, wobei „$“ von dem gewählten Beginn des Reservierungsdatums des Benutzers ist und das Ende der Reservierung $, ist usw.
Gibt es eine Möglichkeit, diese Abfrage zu machen Arbeit auch wenn ein Zimmer keine Reservierungen hat? Jede Hilfe wird sehr geschätzt!
Vielen Dank für eine schnelle Antwort. Ich habe deine Logik angewendet und jetzt funktioniert es endlich richtig! Es macht auch sehr viel Sinn, rt.id und r.id vor der Unterabfrage zu überprüfen. Vielen Dank :) – heap1