我目前正在尝试从我们的某个数据库中挑选出一些查询。 给我提出问题的表几乎如下:
id | bookingStartDate | bookingEndDate | bookingLength | customerID | roomNumber
-----------------------------------------------------------------------------------
310 | 2016-11-10 | 2016-11-17 | 7 | 004943 | 583
443 | 2017-01-15 | 2016-11-29 | 14 | 008745 | 345
我想要实现的是在特定时间窗口内提供特定房间的可用性。 数据当前存储的方式,我可以访问预订的开始和结束以及预订将持续的夜晚。
我要做的是创建一个查询,以检查特定房间的可用性,并提供一系列日期,例如从11月10日到2016年11月20日。
为了解决这个问题,我尝试用这个连接日历表并过滤房间号码。然而,加入依赖于bookingStartDate或者结束,我不知道如何继续获取数据以显示房间也被占用时两者之间的日子。
任何帮助或建议都会非常有用!
答案 0 :(得分:0)
使用日历表:
set @PeriodStart = '2016-01-01';
set @PeriodEnd = '2017-12-31';
set @Room = 583;
select Ca.Date,
Bo.RoomNumber,
Bo.CustomerID
from Calendar Ca
left join Booking Bo
on Ca.Date between Bo.StartDate and Bo.EndDate
where Ca.Date between @PeriodStart and @PeriodEnd
and RoomNumber = @Room ;
这将显示@PeriodStart和@PeriodEnd之间的所有日期,以及该房间期间的所有预订