Все. У меня есть проблема с моим заданием о бронировании гостиницы в Интернете, что моя проблема с трудностью проверить доступный номер. Поэтому у меня много таблиц:
tbRoom(RoomID,RoomName,...) tbReservation(ResID,ResDate,....) tbReservationDetail(ResID,RoomID,ArrvialDate,DepartureDate,....)
Я хочу получить комнату, доступную между двумя датами.
так, как я это делаю? Или мне нужно создать больше таблицы?
Пожалуйста, помогите мне, спасибо за помощь ….
Вы можете выбрать зарезервированные комнаты и инвертировать:
SELECT * FROM tbRoom WHERE RoomID NOT IN (SELECT RoomID FROM tbReservationDetail WHERE ArrvialDate < yourDate AND DepartureDate > yourDate)
Вы можете достичь своего результата, используя указанные выше 3 таблицы. но вам нужно изменить только то, что вам нужно использовать RoomID
в таблице tbReservation
.
rbRoom
-> хранить отдельные комнаты
tbReservation
-> когда зарезервирована комната, в этой таблице будет храниться идентификатор RoomID и идентификатор резервирования. tbReservationDetail
-> хранит другие данные о приеме date, DepartureDate и т. д.
затем выполните следующий запрос
SELECT * FROM tbRoom WHERE RoomID NOT IN (SELECT RoomID FROM tbReservation tr,tbReservationDetail td WHERE td.ArrvialDate < yourDate AND td.DepartureDate > yourDate and tr.RoomID=td.RoomID)