Наличие номеров в отеле Mysql Похожие таблицы - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть приложение для бронирования номеров в отелях, которое в основном основано на таблицах ниже.

Моя таблица бронирования,

`id`
`category`
`booking_no`
`room_id`
`date`
`guest_id`
`status`

Таблица моих комнат

`id`
`room_type_id`
`room_no`
`booking_no`
`blocked_from`
`blocked_to`
`status`

Моя таблица типов комнат

`id`
`category`
`name`
`status`

Моя таблица check_inout

`id`
`booking_no`
`room_id`
`guest_id`
`date`
`inout_status`
`status`

В настоящее время я использую запрос ниже, чтобы выбрать свободные номера, в которые можно добавить бронирование. Этот запрос работает отлично, и я могу получить то, что я хочу.

$query = "
SELECT r.room_type_id
     , r.id room_id
     , r.room_no
     , t.name room_type_name
  FROM rooms r
  JOIN room_types t
  ON t.id = r.room_type_id 
 WHERE r.id NOT IN 
( SELECT room_id 
       FROM reservations 
    WHERE (date >='$checkin' 
        AND date <'$checkout') 
       AND category = 'Accommodation' 
   AND status=1) 
   AND t.category = 'Accommodation' 
   AND r.status <> 7 
   AND (r.blocked_from > '$checkout' 
 OR r.blocked_to < '$checkin' 
     OR r.blocked_to IS NULL 
     OR r.blocked_from IS NULL) 
 ORDER 
    BY r.room_type_id
     , r.room_no ASC
";

Кроме того, когда гость регистрируется в комнате, я вставляю этот статус в таблицу check_inout со статусом 1 для inout_status feild. И когда он проверяет, я вставляю статус 2 для поля inout_status. Кроме того, я обновляю номер бронирования для определенного номера в таблице номеров при регистрации, а затем удаляю его при оформлении заказа.

Проблема: Если один гость зарезервирует номер на 1 день, и если он выехал в тот же день (например: гость зарегистрировался в 13:00 ~ выехал в 18:00 того же дня), то комната должна быть доступна для другого гостя, чтобы проверить- в.

К сожалению, я не могу получить это, используя мою структуру таблицы выше. Потому что я проверяю доступность в соответствии с таблицей бронирования, используя запрос выше.

Помогите, если кто-то может найти способ получить его, связав таблицу check_inout , поскольку в ней есть записи о проверке и проверке для всех комнат.

MySQL, скрипка здесь http://sqlfiddle.com/#!9/e4747/2

В результате я тоже хочу получить 204 комнаты, но не знаю, как ее получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...