我的项目中有一个情况如下。
在检查可用房间时
$sel_from_bookings="SELECT room_no FROM `booking` WHERE (('".$_POST['req_tdate']."' BETWEEN check_indate AND check_outdate) OR ('".$_POST['req_fdate']."' BETWEEN check_indate AND check_outdate)";
$sel_from_reserv="SELECT room_no FROM `reservation` WHERE (('".$_POST['req_tdate']."' BETWEEN check_indate AND check_outdate) OR ('".$_POST['req_fdate']."' BETWEEN check_indate AND check_outdate))";
$sel_rooms="SELECT room_no FROM rooms WHERE room_no NOT IN (".$sel_from_bookings.") AND room_no NOT IN (".$sel_from_reserv.")";
第一个查询从预订表中检索满足日期范围的房间号列表
同样,第二个与餐桌预订相同
最后一个查询使用上述两个查询提供的列表,并获取不在生成列表中的房间列表。
2010 年 8 月 10 日 / 2010 年 8 月 15 日运行良好
20-08-2010 / 25-08-2010 工作正常
当我给出 10 到 15 之间的日期时,它对于 20 和 25 也同样适用,对于日期 14-08-2010 和 21-08-2010 也同样适用
但在 16-08-2010 至 19-08-2010 期间不工作
需要任何澄清请问我。
Thanks.
SELECT *
FROM room
WHERE room_no NOT IN
(
SELECT room_no
FROM booking
WHERE check_outdate >= @req_fdate
AND check_indate <= @red_tdate
)
AND room_no NOT IN
(
SELECT room_no
FROM reservation
WHERE check_outdate >= @req_fdate
AND check_indate <= @red_tdate
)
注意顺序或参数:@req_fdate
这是这里的第一次约会(from), @req_tdate
是最后一个日期(till).
要检查可用性,请从Aug 16
to Aug 19
, 用这个:
SELECT *
FROM room
WHERE room_no NOT IN
(
SELECT room_no
FROM booking
WHERE check_outdate >= '2010-08-16'
AND check_indate <= '2010-08-19'
)
AND room_no NOT IN
(
SELECT room_no
FROM reservation
WHERE check_outdate >= '2010-08-16'
AND check_indate <= '2010-08-19'
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)