您好我正在尝试在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
答案 0 :(得分:0)
我认为像这样做一个子选择会得到你的结果......
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)
)
<强>问题强>
“非常感谢这似乎有用,但是你可以解释一下这个独特的功能是什么,因为查询似乎仍然可以在没有它的情况下工作”
<强>答案强> Distinct仅返回每个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
因此,它基本上消除了重复数据