За время пользования PrestaShop накопилось несколько полезных запросов, которые использую до сих пор. Вот один из них.
Товары, выбранные как связанные меньше 10 раз (с учетом наличия на остатках)
Если хотите ограничить по категории, то менять нужно здесь:
Товары, выбранные как связанные меньше 10 раз (с учетом наличия на остатках)
SQL:
SELECT
q.id_product_2, p.reference, pl.name, cp.id_category, sa.quantity, q.cnt
FROM
(SELECT count(distinct pa.id_product_1) cnt, pa.id_product_2 FROM ps_accessory pa
INNER JOIN ps_stock_available sa
ON sa.id_product = pa.id_product_1 AND sa.id_product_attribute = 0 AND sa.quantity > 0
GROUP BY pa.id_product_2
HAVING cnt < 10) q
INNER JOIN ps_product p
ON q.id_product_2 = p.id_product AND p.active = 1
INNER JOIN ps_stock_available sa
ON sa.id_product = q.id_product_2 AND sa.id_product_attribute = 0 AND sa.quantity > 0
LEFT JOIN ps_product_lang pl ON (q.id_product_2 = pl.id_product AND pl.id_shop = 1 AND pl.id_lang = 1)
LEFT JOIN (select id_product, min(id_category) id_category from ps_category_product where id_category > 2 group by id_product) cp ON cp.id_product = q.id_product_2
WHERE
1=1 -- AND NOT cp.id_category = 33
ORDER BY
q.cnt ASC
Если хотите ограничить по категории, то менять нужно здесь:
SQL:
AND NOT cp.id_category = 33