mysql检查房间可用性查询中的下一个和上一个可用时间段

时间:2015-06-18 18:47:43

标签: php mysql

对于我的项目我想添加该功能以显示预订预订系统中的上一个和下一个可用时段。

我有这个查询,检查房子是否可用:

SELECT id
  FROM tbl_reservations
  WHERE (
    `status` LIKE 'confirmed' OR `status` LIKE 'total-payed'
   ) AND (
     '2015-08-12' BETWEEN checkin AND checkout 
     OR checkout BETWEEN '2015-08-12' AND '2015-08-13'
     OR '2015-08-12' BETWEEN checkin AND checkout
     OR checkin BETWEEN '2015-08-12' AND '2015-08-13'
   );

如果在该期间内发现预订,则PHP脚本返回false,因此会显示

之类的消息
  

“抱歉,在选定期间内无法使用”

我想表现出类似的东西:

  

“XX晚住宿的下一个可用时间是:”

然后显示签到和结帐日期。

上一期也是如此。

我没有掌握100%的sql,所以我在这里要求任何形式的建议指出我正确的方向。

2 个答案:

答案 0 :(得分:1)

以下是两种解决方案。

预订下次预订时间:

%s

预订住宿预订。

SELECT id
FROM tbl_reservations
WHERE (
  `status` != 'confirmed' and `status` != 'total-payed'
 )
and checkin = (select min(checkin) from tbl_reservations
               where checkin > '2015-08-12'
                 and checkout - checkin >= '2015-08-12' - '2015-08-13');          

这些可以很容易地组合成一个查询,但从问题看起来你想要两个单独的查询。经过测试并准备就绪......

答案 1 :(得分:0)

我已经解决了这个问题:

由于访问者主要对他/她选择的时段感兴趣,因此我会在原始签到日期之前30天和之后30天运行相同的查询。

我得到一个" false"后我就打破了循环,这意味着在这段时间内没有预约。

也许这不是最优雅的方式或最高效的方式,但它的工作和我很高兴:)

仍然接受任何进一步的建议。小心,总是!