#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);
Комментариев нет:
Отправить комментарий