【发布时间】:2015-06-24 09:02:35
【问题描述】:
我正在尝试在 .NET 中创建预订系统。我有一个数据库,其中有一个名为 Booking、Room 和 BookingRoom 的表。
Room 包含作为 Room.RoomID 的房间号。 BookingRoom 只有两列,RoomID 和 BookingID。 Booking 有几列,但我要使用的列是 CheckInDate 和 CheckOutDate 以及 BookingID。
房间 -> BookingRoom -> 预订
这是我现在的位置:
SELECT DISTINCT r.RoomID
FROM Room r
RIGHT JOIN BookingRoom br ON br.RoomID = r.RoomID
RIGHT JOIN Booking b ON b.BookingID = br.BookingID
RIGHT JOIN Rates ra ON r.RateID = ra.RateID
WHERE (b.CheckInDate < '2015/06/21 00:00:00' OR b.CheckInDate > '2015/06/27 23:59:59.999') AND (b.CheckOutDate < '2015/06/27 00:00:00' OR b.CheckOutDate > '2015/06/21 23:59:59.999');
不幸的是,这给了我所有房间的列表,因为虽然它不包括该范围内的房间,但房间号与它在外面的另一个预订相匹配。
现在我无法确定是否可以返回房间列表,不包括与 CheckInDate 和 CheckOutDate 范围内的日期匹配的房间。
【问题讨论】:
标签: sql sql-server