Помощь с Query для группирования свободных номеров между определенными датами в соответствующих отелях

0

Я создаю систему бронирования онлайн-отелей.... Используя php и mysql.... Пользователи могут искать и заказывать отели в определенном месте.. Критерии поиска будут
1. Город или страна
2. Дата заезда и выезда 3. Количество гостей
Моя схема sql выглядит следующим образом.

  • Таблица: отели
    hotel_id
    hotel_name
    country_id
    city_id

  • Таблица: комнаты
     room_id
     hotel_id
     room_name
     room_price
     max_guests_allowed
     no_total_rooms
     no_booked_rooms

  • Таблица: бронирование
     booking_id
     room_id
     hotel_id
     check_in_date
     check_out_date

Запрос, чтобы освободить комнаты между двумя заданными датами и может разместить лиц, равных или больше, чем нет. лиц, предоставленных пользователем:

SELECT rooms.room_id, 
       rooms.room_name, 
       rooms.max_guests_allowed, 
       rooms.room_price, 
       hotels.hotel_id, 
       hotels.hotel_name 
FROM   hotel,rooms 
WHERE rooms.id NOT IN (SELECT room_id 
                       FROM   reservations 
                       WHERE  check_in_date < '$arrivalDate' 
                       AND    check_out_date > '$leaveDate') 
AND   rooms.max_guests_allowed >= '$no_of_guests'; 

Теперь... Мне нужно показать результат, как....

1. Hotel 1 
     Room 1     No. of Rooms Free     Price   Max. Guests Allowed 
     Room 2     No. of Rooms Free     Price   Max. Guests Allowed 
     Room 3     No. of Rooms Free     Price   Max. Guests Allowed

2. Hotel 2
     Room 1     No. of Rooms Free     Price   Max. Guests Allowed 
     Room 2     No. of Rooms Free     Price   Max. Guests Allowed 
     Room 3     No. of Rooms Free     Price   Max. Guests Allowed

etc.. etc...

Как мне изменить свой запрос, чтобы группировать комнаты в отелях, как я упомянул выше...???? Спасибо большое заблаговременно....

  • 0
    Ваши таблицы заполнены? Единственная ли связь между отелем и номером в таблице бронирования? Могу ли я забронировать один и тот же номер в другом отеле?
  • 0
    @Peter: Вы правы, Питер .... я оставил одно поле: hotel_id, в котором указывается, в каком отеле находится комната ... я буду редактировать пост ..... Спасибо
Теги:

1 ответ

1
Лучший ответ

Возможно, я неправильно понимаю вопрос/запрос, но вы не могли добавить:

ORDER BY hotels.hotel_name ASC,rooms.room_name ASC

до конца запроса, чтобы дать вам результаты в отеле, а затем заказать номер?

Изменить, чтобы отобразить в исходном формате, вы можете использовать код, похожий на этот. Я сделал это в PHP здесь, так как вы не указали, какой язык вы используете:

$currentHotel = -1;
while ($row = mysql_fetch_array())
{
  if ($row["hotel_id"] != $currentHotel)
  {
    print "Hotel " . $row["hotel_id"] . "\n";
    $currentHotel = $row["hotel_id"];
  }

  // print your room details out here
  print "Room " . $row["room_name"];

  // ...
}
  • 0
    Да .. Но это просто закажет отели ... но сгруппирует ли номера в соответствии с их отелями?
  • 0
    @SpikeTidE это упорядочит по возрастанию первой части (hotel_name), затем по возрастанию room_name, но сохраняя порядок hotel_name. Таким образом, вы должны в конечном итоге с тем, что вы поставили в вопросе изначально. Можешь попробовать и посмотреть?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню