房间预订sql查询

Use*_*99x 5 mysql sql cakephp

我在编写sql时遇到问题,从表中获取可用的房间.我的表格结构如下.

表:预订

booking_id    |    room_id   |    start_datetime  |   end_datetime    |   customer_id
-------------------------------------------------------------------------------------
001           |     1        |  12-09-2012 2:35pm | 14-09-2012 9:00am |    23
002           |     2        | 10-09-2012 1:00am  | 20-09-2012 9:00am |    20
003           |     4        |  09-09-2012 1:35pm | 21-09-2012 9:00am |    43
004           |     1        |  22-09-2012 2:35pm | 24-09-2012 9:00am |    9
005           |     3        |  12-09-2012 9:00am | 13-09-2012 9:00am |    53
006           |     6        |  15-09-2012 9:00am | 19-09-2012 9:00am |    27
Run Code Online (Sandbox Code Playgroud)

表:房间

包含房间的详细信息,表格的主键是room_id,它有10个房间,从1-10.

我的问题是我想知道房间在14-09-2012下午6:00到21-09-2012上午9:00之间可用,这意味着我应该只得到room_id的结果为1,3,5,7,8 ,9,10.

有人可以帮助我编写SQL以从上面的表结构中获取可用的房间.我正在使用mysql作为数据库引擎.提前致谢.

Joa*_*son 10

这应该做到; 如果预订没有在我们想要的预订之前结束或开始,那么房间被认为是忙碌的.

SELECT r.room_id
FROM rooms r
WHERE r.room_id NOT IN (
    SELECT b.room_id FROM bookings b
    WHERE NOT (b.end_datetime   < '2012-09-14T18:00'
               OR
               b.start_datetime > '2012-09-21T09:00'))
ORDER BY r.room_id;
Run Code Online (Sandbox Code Playgroud)

SQLFiddle在这里.