我正在構建酒店預訂系統,並且在嘗試進行查詢以檢索給定範圍內的所有可用房間類型時,我只是陷入了困境。選擇指定日期範圍內的可用房間
我有兩個表Rooms
和Reservations
。 Rooms
桌上放置着酒店的房間。他們的編號(id
)和他們的類型(type
)。
表Reservations
包含客戶端預訂。預約數(id
),相關的房號(room_id
)和日期範圍(from
和to
)
我曾嘗試此查詢:
SELECT room_id as available_room_number, type
FROM roomstesting
LEFT JOIN reservations ON roomstesting.id = reservations.room_id
WHERE reservations.id
NOT IN (reservations.e_from <='"2014-03-07 19:00:00'
AND reservations.e_to >='2014-03-08 19:00:00')
我試圖讓所有可用房間類型範圍從3月7日到3月8日。我期待得到modern room
作爲查詢的結果。因爲modern room id 4
沒有與日期範圍重疊的保留,所有其他3個房間都有保留從3月6日至3月9日。但我沒有得到我想要的結果。下面是我的數據庫(簡化)
房間結構
| id | type |
|||||||||||||||||||||
| 1 | master suite |
| 2 | master suite |
| 3 | modern room |
| 4 | modern room |
預訂
| id | room_id | from | to |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 1 | 1 | 2014-03-05 08:00:00 | 2014-03-09 08:00:00 |
| 2 | 2 | 2014-03-05 08:00:00 | 2014-03-09 08:00:00 |
| 3 | 3 | 2014-03-05 08:00:00 | 2014-03-09 08:00:00 |
預期結果
| available_room_number | type |
||||||||||||||||||||||||||||||||||||||
| 4 | modern room|
如果有人在這裏可以告訴我,我應該怎麼處理這那將是完美的。期待您的回覆。
YAY?這適用於在該範圍內開始/結束的所有預訂,但不考慮在範圍之外開始和結束的預訂。我已經調整了這個SELECT SELECT room_id FROM reservations WHERE'2014-03-07 19:00:00' e_from'它起作用。如果你能編輯你的答案,很高興接受它。 –
現在呢? – ericpap