【问题标题】:mysql hotel room availabilitymysql 酒店房间供应情况
【发布时间】:2013-09-06 14:59:03
【问题描述】:

我有一个可用性表 ind Mysql 如下:

id
room_id int(11)
avail_date date

对于每个房间,每个可用日期都有一行。 可能存在间隙,例如房间 1 可能有 8 月 1、2、3、5、6、13、14、15 的条目,每隔一天它不可用。

我需要一个查询来查找某个日期范围内每天都有空房的 room_id 列表。

换句话说,获取 room_ids 列表,其中每个房间在 startdate 和 enddate 之间的每个日期都有一个条目。

【问题讨论】:

  • 通常您应该发布您尝试过的内容。这个酒店问题是一个常见问题 - 就像家庭作业一样常见,这不是我的家庭作业网站。
  • 即使是家庭作业,如果问题被正确提出,你也会得到帮助:诚实点! :)
  • 对不起,如果我的问题冒犯了任何人,我只是不知道从哪里开始尝试查找在两个日期之间连续几天有条目的房间

标签: mysql sql


【解决方案1】:

你想要这样的东西:

select room_id
from availability a
where avail_date between $start and $end
group by room_id
having count(*) = datediff($end, $start) + 1;

having 子句计算该期间的行数,以查看它是否与您需要的天数相匹配。这是“包容性”逻辑,所以如果$start = $end,则假定您在该日期需要房间。

【讨论】:

  • 谢谢 Gordon,这正是我想要的!!
  • 完美运行
猜你喜欢
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2013-12-09
  • 2011-09-01
  • 2020-05-24
  • 2022-11-11
  • 2016-02-23
相关资源
最近更新 更多