繁体   English   中英

MySQL日期预约

[英]MySQL date reservation

我尝试找到类似的问题,但没有找到确切的问题,因此我将发布我的问题:

我有2张桌子:

  • 房间(room_id)
  • room_reservation(room_id,日期)

如何返回两个日期之间至少有1天空闲的房间列表。

例如,如果我有那些​​房间:

room_id 1、2和3

然后在room_reservation表中,我有以下内容:

1 - 2012-07-22
1 - 2012-07-23
1 - 2012-07-24
1 - 2012-07-25
1 - 2012-07-26
2 - 2012-07-23
2 - 2012-07-24

然后在2012-07-22和2012-07-26之间搜索可用房间,则只会返回2号和3号房间。

到目前为止,我有这个查询,但是没有用...请帮助!

SELECT DISTINCT room_id AS id
FROM room
WHERE (SELECT COUNT('listing') FROM listing_calendar WHERE listing = l.listing_id AND date BETWEEN '2012-07-22' AND '2012-07-26' GROUP BY listing) < 5"

谢谢您的帮助!

您可以使用以下解决方案:

SELECT    a.room_id
FROM      rooms a
LEFT JOIN room_reservations b ON 
          a.room_id = b.room_id AND
          b.date BETWEEN '2012-07-22' AND '2012-07-26'
GROUP BY  a.room_id
HAVING    COUNT(b.room_id) < DATEDIFF('2012-07-26', '2012-07-22') + 1

SQLFiddle演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM