您希望所有在该日期范围内没有预订的房间,即,如果您的sql引擎执行子查询…
Select * From Rooms r where not exists (Select * From Bookings Where room = r.room And startBooking < @endRange And endBooking > @startRange)
HIK,要了解对room = r.room子句的需求,请尝试以下两个查询
查询一(用room = r.room子句)
Select r.*, Case Where Exists(Select * From Bookings Where room = r.room And startBooking < @endRange And endBooking > @startRange) Then 'Y' Else 'N' End HasBooking From Rooms r
查询二(不包含room = r.room子句)
Select r.*, Case Where Exists(Select * From Bookings Where startBooking < @endRange And endBooking > @startRange) Then 'Y' Else 'N' End HasBooking From Rooms r
请注意,第一个为输出的每一行在HasBooking中返回不同的值,因为子查询与外部查询“关联” …它在agaio上反复运行,对于每个外部查询结果行一次。
第二个对于所有行都是相同的值…它仅执行一次,因为其中的任何内容都不取决于为其生成外部查询的哪一行。



