[英]MySQL query for booking. How to allow two reservations on the same date (check-in/check-out)
我想在两个日期之间预订所有房间。
我现在正在使用此查询,但我遇到了问题。 我做了很多尝试,做了很多搜索,但几个小时后我决定尝试在这里寻求帮助。
SELECT 1 FROM reservations WHERE
checkin <= '$check_out' AND checkout >= '$check_in'
让我们说某人预订21日至22日。
他于21日下午4:00办理登机手续,并于22日中午12:00退房
这个房间在下午4点之前仍然免费
这个房间在中午12点之后仍然是免费的
有了这个查询,我无法预订20日至21日
入住时间为20日下午4:00,退房时间为21日中午12:00
我也无法预订22日至23日。
知道如何调整查询以反映现实吗?
还有那个查询:
(checkin <= '$check_in' AND checkout >= '$check_in') OR
(checkin <= '$check_out' AND checkout >= '$check_out') OR
(checkin >= '$check_in' AND checkout <= '$check_out')
您可以参考这个问题,这是我接受查询的地方: 检查MySQL中的日期范围冲突
非常感谢!
@georstef发布了这个链接,看看它是否有助于我的问题下面的评论: 使用MySQL查询选择房间可用性
它做到了!
正确的WHERE子句现在如下:
(checkin <= '$check_in' AND checkout >= '$check_in') OR
(checkin < '$check_out' AND checkout >= '$check_out') OR
(checkin >= '$check_in' AND checkout < '$check_out')
谢谢!
$AvailableWhere = array ('checkin <=' => $start, 'checkin <=' => $end, 'checkout >=' => $end, 'checkout >=' => $start, 'checkin >=' => $start AND 'checkout' <= $end);
$this->db->where($AvailableWhere);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.