Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

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

#php #sql


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

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


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


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

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


Ответы

Ответ 1



Можно использовать UNION. Первый запрос с LIMIT 5. (SELECT * FROM `table1` WHERE `is_premium` = 1 LIMIT 5) UNION (SELECT * FROM `table1` WHERE `is_premium` = 0);

Комментариев нет:

Отправить комментарий