【发布时间】:2017-02-03 02:23:55
【问题描述】:
我正在尝试根据用户提供的日期范围获取未预订的酒店房间。
我有两张桌子
- 房间,列有room_id、roomno
- reservations 列reserv_id、room_id、checkindate、checkoutdate
我正在应用这个查询
$sql = "SELECT DISTINCT roomno
FROM rooms
LEFT JOIN reservation ON rooms.room_id = reservation.room_id
AND
(
(
(reservation.checkindate > '$newreservcheckin')
AND
(reservation.checkindate > '$newreservcheckout')
)
OR
(
(reservation.checkoutdate < '$newreservcheckin')
AND
(reservation.checkoutdate < '$newreservcheckout')
)
)";
$newreservcheckin 和 $newreservcheckout 是用户提供的日期范围
假设我们有房间号为 100 和 101 的房间 现在从 9-16-2016 到 9-18-2016 预订了 100 个 从 2016 年 9 月 27 日到 2016 年 9 月 29 日,还有 100 人被预订 并且101房间是未预订的(意味着它在预订表中没有记录)
假设如果用户给出日期 9-26-2016 到 9-30-2016 查询将忽略从 9-27-2016 到 9-29-2016 的房间号 100 条目,但会显示房间号 100 的日期从 9-16-2016 到 9-18-2016,将显示 101 个房间
如何塑造查询,使其不会给出相同的房间,而是给出不同日期的房间?
【问题讨论】: