atis2345
@atis2345
PHP developer

Как вытащить одним запросом несколько строк с разными параметрами и ограничением на количество?

Задача следующая, вытянуть одним запросом отели где страна = United States и Spain
с лимитом 3 отеля из страны

код примерно такой.
как можно установить лимиты на страну?

SELECT *
FROM `hotels` `h`
INNER JOIN `catalog` `c`
ON `h`.`country` = `c`.`id`
WHERE `hc`.`label` IN ('United States', 'Spain')
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ответы на вопрос 1
@ivanoleynik
Думаю схема примерно такая будет.
В параметре where делаем новый под запрос из той же таблицы.
Делаем выборку id по совпадению названия из первой выборки с названием из второй и ограничиваем тремя результатами.
В итоге мы должны получить три id для основного запроса, который объединит эти записи с другими данными.

Запрос может выглядеть примерно так:

SELECT * FROM hotels a
WHERE a.id = (SELECT b.id FROM hotels b WHERE a.label = b.label LIMIT 3 )
А делее inner join...

Такой запрос будет проходить по всем странам и брать только три записи. Если нужно идти только по двум странам, нужно добавить дополнительное ограничение в какой либо запрос через AND.
Ответ написан
Ваш ответ на вопрос

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

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