SELECT count(DISTINCT p.goods_id, fe.f_id) as cnt, fe.f_id FROM goods AS p INNER JOIN
catalog_product_filter_eav AS fe ON p.goods_id = fe.p_id WHERE p.cat_id='10' GROUP BY fe.f_id
выводит количество товаров в каждом фильтре (cnt - количество товаров с атрибутом, f_id -id атрибута)
это таблица catalog_product_filter_eav
При выборе атрибута я сокращаю список выводимых товаров
Код:
SELECT * FROM goods as p INNER JOIN catalog_product_filter_eav AS fe ON p.goods_id = fe.p_id
WHERE p.cat_id='10' AND fe.f_id = '10'
и соответственно мы видим только тот товар, который имеет выбранный атрибут, но и этот товар имеет свои атрибуты, и что бы их вывести нужно повторить первый запрос, исключив выбранный атрибут и посчитать количество товаров у каждого атрибута, но, я не знаю как.
Код:
SELECT count(DISTINCT p.goods_id, fe.f_id) as cnt, fe.f_id FROM goods AS p INNER JOIN
catalog_product_filter_eav AS fe ON p.goods_id = fe.p_id WHERE p.cat_id='10' and fe.f_id <> 10 GROUP BY fe.f_id
Этот запрос исключает атрибут №10 из списка, но другие атрибуты тоже остались, а должны остаться только 7 и 8 с количеством 1. Помогайте.
SELECT count(DISTINCT p.goods_id, fe.f_id) as cnt, fe.f_id FROM ew_goods AS p
INNER JOIN ew_catalog_product_filter_eav AS fe ON p.goods_id = fe.p_id
INNER JOIN ew_catalog_product_filter_eav AS fe0 ON fe0.p_id = p.goods_id
WHERE fe.f_id NOT IN (10) and p.cat_id='10' and fe0.f_id = 10
GROUP BY fe.f_id