我有两个表:rooms
和scheduled
。在预定表中,有一些条目包含begin_time
,end_time
和room_id
- 这些条目会在预订房间时显示。 rooms-table包含每个房间id
的条目。
begin_time
和end_time
仅包含小时数,例如“9”和“11”,表示该房间的预订时间为9到11。
我想显示当前可用的房间列表。为此,我需要一个查询,从rooms
表中选择所有房间ID,条件是当前小时scheduled
中没有条目(所以{之间的当前小时不存在)房间ID为{1}}和begin_time
。
我尝试了以下内容:
end_time
但是这不起作用,它只显示当前日期SELECT DISTINCT id
, room_nr
FROM rooms
WHERE NOT EXISTS(SELECT room_id
FROM scheduled
WHERE rooms.id = scheduled.room_id
AND date = CURDATE()
AND HOUR(CURDATE()) NOT BETWEEN `begin_time` AND `end_time`)
中id
不存在的房间 - 没有时间条件。我也试过加入的东西,但我真的不明白它们。如何在描述的条件下创建一个从scheduled
- 表返回id
的查询?
更新: 我在这个MySQLFiddle:http://sqlfiddle.com/#!2/ecd82c
中构建了数据库答案 0 :(得分:0)
尝试以下SQL查询:
SELECT DISTINCT id
, room_nr
FROM rooms
WHERE NOT EXISTS(SELECT room_id
FROM scheduled
WHERE rooms.id = scheduled.room_id
AND date = CURDATE()
AND HOUR(CURTIME()) NOT BETWEEN `begin_time` AND `end_time`)