[英]Room booking sql query
我在编写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
表:房间
包含房间的详细信息,表格的主键是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作为数据库引擎。 提前致谢。
这应该做到; 如果预订没有在我们想要的预订之前结束或开始 ,那么房间被认为是忙碌的。
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.