带有条件的SQL查询在第二个表中

时间:2015-01-30 09:47:14

标签: mysql

我有两个表:roomsscheduled。在预定表中,有一些条目包含begin_timeend_timeroom_id - 这些条目会在预订房间时显示。 rooms-table包含每个房间id的条目。

begin_timeend_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

中构建了数据库

1 个答案:

答案 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`)