簡體   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