[英]MYSQL Booking Avaliablity Query
您好,我正在尝试在MYSQL Workbench中编写一个MYSQL查询,该查询基本上显示了Room表中的房间,这些房间在Arrival_Departure表中的某些入住和退房日期之间是空闲的。 我相信我需要在查询中使用Join和Not Between语句来实现此目的,但是我不确定如何将其写出以实现期望的目标。 下面提供了我的表结构。
Room: Room_ID (PK),Floor ,Price
Arrival_Departure:Arr_Dept_ID (PK),Room_ID (FK),Check_In_Date,Check_Out_Date
我认为像这样进行子选择会为您带来结果...
SELECT *
FROM 'Room'
WHERE Room_ID NOT IN (
SELECT distinct(Room_ID)
FROM 'Arrival_Departure'
WHERE Check_In_Date between startDate AND endDate
OR Check_Out_Date between startDate AND endDate
OR (Check_In_Date < startDate AND Check_Out_Date > endDate)
)
题
“非常感谢,这似乎行得通,但是您可以解释一下该独特功能在做什么,因为没有它查询仍然可以工作”
答案不同仅返回每个ID的一个版本,
如果您具有以下数据:
room_id check_in checkout
1 4/15/15 4/16/15
2 4/15/15 4/17/15
1 4/17/15 4/19/15
3 4/18/15 4/20/15
2 4/18/15 4/19/15
1 4/20/15 4/21/15
查询select room_id from table
返回:
room_id
1
2
1
3
2
1
查询select distinct(room_id) from table
返回:
room_id
1
2
3
因此,它基本上消除了重复数据
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.