Я работаю над opencart и выбираю список продуктов, используя нижеупомянутый запрос, и эти продукты отображаются с самым последним продуктом сверху.
$result = mysqli_query($con,"select p.image,p.price,p.store_name,p.deal_title_url,p.shop_now_url,p.coupon_code,p.special_deal_txt,p.special_comment_txt,s.price,d.name,p.date_added from oc_product p, oc_product_special s,oc_product_description d where p.product_id=s.product_id and p.product_id=d.product_id order by p.date_added DESC $limit;");
Заметка —
1. Ограничение для пагинации
2. Данные выбираются из нескольких таблиц
Теперь я хочу отобразить все рекомендуемые продукты в верхней части дисплея. Таким образом, в основном продукты, которые находятся в избранном массиве, всегда должны отображаться сверху, а затем остальные продукты в зависимости от даты создания.
Идентификаторы рекомендуемого продукта хранятся в массиве — $ featured_array
Как это может быть сделано?
Обратите внимание, что количество рекомендуемых продуктов может варьироваться.
Попробуйте использовать UNION. В первом запросе получить рекомендуемые товары, во втором поставить текущий запрос. Предел для результата объединения
(
select p.image,p.price,p.store_name,p.deal_title_url,p.shop_now_url,p.coupon_code,p.special_deal_txt,p.special_comment_txt,s.price,d.name,p.date_added from oc_product p, oc_product_special s,oc_product_description d where p.product_id=s.product_id and p.product_id=d.product_id AND p.product_id IN($featuredProductsIds) order by p.date_added DESC
)
UNION
(
select p.image,p.price,p.store_name,p.deal_title_url,p.shop_now_url,p.coupon_code,p.special_deal_txt,p.special_comment_txt,s.price,d.name,p.date_added from oc_product p, oc_product_special s,oc_product_description d where p.product_id=s.product_id and p.product_id=d.product_id order by p.date_added DESC
)
$limit;
Других решений пока нет …