Имеется такая структура базы https://dropmefiles.com/rODrB
Нужно сделать выборку товаров из таблицы goods при заданной категории товара и массива значений id фильтров.
сейчас делаю так
"SELECT g.name,
g.alias,
g.price,
g.discount_price,
g.isNew,
images.path
FROM goods as g
JOIN
(SELECT product_id FROM goods_filter_value as g1
JOIN
(SELECT id FROM values_filters WHERE id IN (:filters)) as g2
ON g1.value_id = g2.id GROUP BY g1.product_id
HAVING COUNT(*)= :countFilters) as g3 ON g.id = g3.product_id
INNER JOIN goods_category ON g.id = goods_category.product_id
INNER JOIN categories ON goods_category.category_id = categories.id
INNER JOIN images ON g.id = images.product_id
WHERE categories.alias = :alias
AND images.isMain = 1";
Только это немного не тот результат который я хочу получить. Зараз я получаю все товары из заданной категории + этот товар имеет все заданные значения фильтров. Нужно сделать так чтобы в пределах разных фильтров товар из каждого имел минимум одно значение фильтров.
Например есть фильтры "Размер" со значениями 1,2,3,4,5 и "Цвет" со значениями красный, синий, белый, черный
Есть товар А с привязанными значениями фильтров 2,3,4,синий,черный; товар В - 1, 2, красный, синий; товар С - 4,5,белый,черный
При заданных фильтрах: 2, синий - получаем товары А, В
2, 4, синий - A,В
4,5,белый,черный - А,С
1,синий - В