две выборки + пагинация

270
26 июня 2017, 20:53

Здравствуйте.

Мне нужно, чтобы в общем списке объявлений (до 15 шт) всегда на первом месте выводились премиум-объявления, но только ограниченно (до 5 шт). Т.е. на странице может быть всего 20 объявлений.

  1. сначала я попробовал сделать общую выборку с сортировкой по премиуму, но получилось не совсем то, т.к. будут все премиум первыми идти в выдаче.

  2. решил сделать две отдельные выборки (select count) и результат (select) объединить (array_merge). Но столкнулся с проблемой пагинации, которую не пойму как решить: допустим выборка премиум дала 10 страниц (9стр. по 5шт, 10я - 2шт), а обычная выборка дала 3 страницы.

На сайте я получаю готовые 3 страницы, на которых видно все как надо, но т.к. премиум заняло 10 страниц, то часть премиум уже потеряна.

Подскажите логику действий, а то запутался! Спасибо.

Answer 1

Можно использовать UNION. Первый запрос с LIMIT 5.

SELECT премиум LIMIT 5
UNION
SELECT обычные
READ ALSO
Запрос на поиск по столбцам

Запрос на поиск по столбцам

Сейчас выводит поиск только по user_name, как сделать или user_lastname или user_salary?

164
Вызов одного метода в Php несколько раз

Вызов одного метода в Php несколько раз

Почему, при вызове одного и того же метода с разными параметрами в одном блоке кода не работает?

156
Use of undefined constant

Use of undefined constant

На localhost код работает, а на хостинге возникает ошибка:

295