Я строю систему бронирования отелей на C #, как портфельный проект, чтобы показать работодателям, когда я заканчиваю колледж.
В моей главной форме есть объект Calendar Calendar, который при щелчке по датеобновит DataGridView со всеми комнатами;и если в этой комнате есть резервирование на эту дату, оно будет отображено.
В базе данных MySQL используются две таблицы: «Комнаты» и «Резервирования»
Iбудут включать изображения с примерами данных, которые также показывают заголовки столбцов.
Поскольку я изучил SQL с использованием MSSQL, MySQL доставляет мне некоторые проблемы.
Для основной формы, чтобы показать данныеправильно, мне нужен запрос, чтобы вернуть ВСЕ комнаты, и есть ли в этом номере бронирование на указанную дату. В ходе некоторых исследований я обнаружил, что полное соединение будет правильным соединением, поскольку оно показывает все поля из обеих таблиц. Поскольку MySQL не поддерживает полные объединения, я нашел способ эмулировать его, используя
SELECT * FROM ROOMS r
LEFT JOIN RESERVATIONS rs ON r.RoomNumber = rs.RoomNumberReserved
UNION
SELECT * FROM ROOMS r
RIGHT JOIN RESERVATIONS rs ON r.RoomNumber = rs.RoomNumberReserved
WHERE
rs.CheckInDate <= CURRENT_DATE
AND CAST((rs.CheckInDate + rs.NumberOfNights) AS DATE) > CURRENT_DATE
В предложении Where в основном говорится, что нужно отображать только те бронирования, у которых есть дата регистрации до или на дату, и проверкадата после даты. В основном показывает резервирование, которое активно в эту дату.
Однако пример резервирования показывает 100% времени, даже если он не соответствует критериям условия where. Объединение в ключевой части запроса работает хорошо, так как резервирование отображается рядом с нужной комнатой, но похоже, что предложение where не работает должным образом.
Я не уверен, что делать с этим, поэтому любая помощь, чтобы получить меня на правильном пути будет принята.
Спасибо
Таблица бронирования Таблица номеров