1
我目前正在致力于酒店预订服务,并且我想在特定时间段内显示特定房型和酒店的所有免费房间。 我发现什么似乎是一个工作查询,直到我注意到:如果一个房间没有任何保留,它不起作用。SQL在特定时间段内查找免费房间
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
这个查询将在PHP脚本中使用,其中“从$”是用户选择的预订日期开始至$的就是预约的结束等
有没有一种方法,使这项查询即使房间没有保留也可以工作吗? 任何帮助,非常感谢!
非常感谢您的回复。我应用了你的逻辑,现在它终于正常工作了!在子查询之前检查rt.id和r.id也很有意义。谢谢 :) – heap1