@Richard_Ferlow
Веб-программист

Как посчитать количество опций для результатов поиска отелей в mysql?

Суть в следующей - есть таблица с отелями.

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

и вот сижу думаю сообразить не могу - как правильнее всего получить следующие данные, минимизировав кол-во запросов:

- список услуг, которые в найденных отелях присутствуют, и сколько отелей с данной услугой есть

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

547b6701e4264070b291f88eb8830799.PNG

Также при хранении в таблице отелей есть столбец, где эти же услуги через запятую перечислены. т.е. поле типа varchar. Сделал это, чтобы по конкретному отелю можно было вывести услуги, не делая доп запросы.
  • Вопрос задан
  • 2365 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если заранее получен список отелей, то
SELECT `id_услуги`, COUNT(`id услуги`) 
    FROM `услуги` 
    WHERE `id_отеля` IN (список отелей) 
    GROUP BY `id_услуги`

Если отели выбираются по условию, то
SELECT `услуги`.`id_услуги`, COUNT(`услуги`.`id услуги`) 
    FROM `услуги` 
        RIGHT JOIN `отели` ON `отели`.`id_отеля` = `услуги`.`id_отеля`
    WHERE условия выбора отеля
    GROUP BY `услуги`.`id_услуги`
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы