我有2个MySQL表
tableRooms包含酒店的房间
tableRoomsBooked包含预订的房间日期
我需要一个SQL查询来返回在两个给定日期之间没有预订的房间。这是我到目前为止所得到的:
SELECT * FROM `tableRooms`
LEFT JOIN `tableRoomsBooked`
ON `tableRooms`.`id` = `tableRoomsBooked`.`room_id`
WHERE (date BETWEEN '2015-01-02' AND '2015-01-30')
....?
查询应该只获取room_id 2,因为2号房间在此期间没有预订。
我的查询应该是什么样的?
答案 0 :(得分:4)
select *
from tableRooms
where id not in (
select distinct room_id
from tableRoomsBooked
where date between '2015-01-02' and '2015-01-30'
)
这将选择子请求中的现有ID列表,然后将其从主请求中排除。
无论如何,你应该更改" date"的名称。专栏,因为" date"一旦它也是一种数据类型,它就会引起混淆。