Имеется такая структура базы 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,синий - В