繁体   English   中英

查询返回比指定范围早或晚 3 天的可用酒店房间

[英]Query to return available hotel rooms 3 days earlier or later than a specified range

我想返回酒店预订系统中的可用房间。 查询应返回比指定日期范围早或晚 3 天的结果。

数据库结构:

房间表(RoomID、RoomType、BedsNo、ViewAvailable...) 预订表(ReservationID、RoomID、CheckinDate、CheckoutDate...)

我正在使用以下查询返回指定日期范围内的可用房间:DateFrom 和 DateTo。 但是,如何返回比日期范围 DateFrom 和 DateTo 早或晚 3 天的结果。

select * from room 
where room.roomId not in
(select reservation.roomId from reservation where 
  (reservation.check_in_date <= `FromDate` AND reservation.check_out_date >= `ToDate`) 
           OR (reservation.check_in_date < `FromDate` AND reservation.check_out_date >= `ToDate`) 
           OR (`FromDate` <= reservation.check_in_date AND `ToDate` >= reservation.check_out_date))

你不能通过类似的方式为FromDateToDate添加 3 天

[...]
where reservation.check_in_data <= date_sub(FromDate, interval 3 day) 
and reservation.check_out_date >= date_add(ToDate, interval 3 day)
[...]

使用间隔

select * from room 
where room.roomId not in
(select reservation.roomId from reservation where 
  (reservation.check_in_date <= `FromDate` - INTERVAL 3 DAY AND reservation.check_out_date >= `ToDate` + INTERVAL 3 DAY) 
           OR (reservation.check_in_date < `FromDate` - INTERVAL 3 DAY AND reservation.check_out_date >= `ToDate` + INTERVAL 3 DAY) 
           OR (`FromDate` - INTERVAL 3 DAY <= reservation.check_in_date AND `ToDate` + INTERVAL 3 DAY >= reservation.check_out_date))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM