繁体   English   中英

MYSQL预订可用性查询

[英]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.

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