どのようにまったくresevations付きの客室を取得するために:
何の予約がない場合は、クエリによって返さ一切reservations
行は存在しません=>あなたがそれをチェックする必要があり、また(reservations.room_id IS NULL
):
SELECT rooms.* FROM rooms
LEFT JOIN reservations ON reservations.room_id = rooms.id
WHERE reservations.room_id IS NULL -- if there is no reservations
OR reservations.from > till_field
OR reservations.till < from_field
しかし、実際に何をしたいのou取得するには、あなたが任意の予約を持っていない部屋をチェックする必要があります。
fromDate or tillDate between from_field and till_field
OR
fromDate < from_field and tillDate > till_field
SELECT rooms.*
FROM rooms
WHERE NOT EXISTS (SELECT NULL
FROM reservations
WHERE reservations.room_id = rooms.id
AND ((
reservations.from BETWEEN from_field AND till_field
OR
reservations.till BETWEEN from_field AND till_field
)
OR
(
reservations.from < from_field
AND reservations.till > till_field
)
)
)
問題は何ですか? –
LEFT JOINは問題を引き起こしています。予約がない場合、客室を返却しません。 – John