Я разрабатываю интерактивный путеводитель со множеством отелей. Каждый отель относится к определенной категории, имеет много типов номеров, и каждый номер в отеле имеет разную цену за сезон. Я хочу сделать сложный запрос из 4 таблиц, чтобы получить общее количество отелей в категории отелей , где минимальная цена каждого номера в отеле находится между 2 значениями, которые корректируются с помощью ползунка .
Мои таблицы выглядят так:
- Категории
- id_category
- category_name
- Отели
- id_hotel
- hotel_name
- category_id
- ......
- hotels_room_types
- id_hotels_room_type
- hotel_id
- room_type_id
- ......
- hotels_room_types_seasons
- hotels_room_types_id
- season_id
- цена
- ......
например, некоторые значения category_name: отели, квартиры, общежития
Я хотел бы, чтобы в моей таблице результатов было два поля, например:
Отели 32
квартиры 0
хостелы 5
Я попробовал следующий запрос, но он возвращает общее количество всех отелей в каждой категории, а не количество гостиниц, где минимальная цена их номеров находится в диапазоне цен.
SELECT c.category_name, count( DISTINCT id_hotel ) , min( price ) min_price
FROM categories c
LEFT JOIN hotels w ON ( c.id_category = w.category_id )
LEFT JOIN (
hotels_room_types
INNER JOIN hotels_room_types_seasons ON hotels_room_types.id_hotels_room_types = hotels_room_types_seasons.hotels_room_types_id)
ON w.id_hotel = hotels_room_types.hotel_id
GROUP BY c.category_name
HAVING min_price >=10 AND min_price <=130
Может ли кто-нибудь помочь мне, как написать соответствующий запрос?
Спасибо !!!