Я пытаюсь сделать систему бронирования в .NET. У меня есть база данных со столами под названием «Бронирование», «Комната» и «Бронирование».Возврат результатов за пределы диапазона
Номер содержит номера комнат как Room.RoomID. В BookingRoom есть только два столбца, RoomID и BookingID. Бронирование имеет несколько столбцов, но те, которые я хочу использовать, являются столбцами для 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.