Я разрабатываю систему бронирования отелей. Мои таблицы следующие:
номера:
id, room, room_type, hotel_id
Тип номера:
id, type, hotel_id
бронирование
id,room_id,type_id, hotel_id, checkin, checkout
Я пытаюсь составить форму доступности номеров, которая проверяет таблицу бронирования и получает все номера в соответствии с выбранным типом номера со статусом, т. Е. Номер свободен или нет в указанные даты.
Вот три условия для проверки:
checkin_date < booking table checking date
Или же
checkin_date > booking table checkout date
Или же
room_id (with hotel it and room type as specified) should not be available in booking table i.e it has never been booked.
Поэтому я разработал следующий запрос, но он не прошел:
SELECT * FROM rooms where room_type = '$room_types' & 'hotel_id' = '$hotel_ids' AND `id` IN (SELECT room_id FROM booking WHERE (`hotel_id`='$hotel_id' AND `room_type`='$room_types' AND ( `checkin` > '$checkout' OR `checkout` < '$checkin' ) ) ) or 'id' NOT IN (SELECT room_id FROM booking WHERE `hotel_id`='$hotel_id' AND `room_type`='$room_types' )
Вот
$checkin refers to checkin date selected by user.
$checkout refers to checkout date selected by user.
$hotel_id is hotel id.
$room_type is room type like deluxe etc.
Любой совет о том, как правильно это сделать?
Задача ещё не решена.
Других решений пока нет …