Как вывести в EAV структуре количество товаров с несколькими атрибутами?

Суть в следующем. Есть 2 таблицы - product и product_attributes. В product_attributes данные хранятся в виде структуры: attribute_id, attribute_value, product_id. Стоит тривиальная задача вывести количество товаров, у которых выбрано n значений. Запрос типа такого, который приходит на ум, не работает.

select p.id, p.name, pa.attribute_id, pa.value_id FROM products p LEFT JOIN product_attributes pa ON p.id=pa.product_id WHERE ((pa.attribute_id=11 AND pa.value_id=1) AND (pa.attribute_id=13 AND pa.value_id=113))


Не работает видимо потому, что у нас (pa.attribute_id=11 AND pa.value_id=1) и (pa.attribute_id=13 AND pa.value_id=113) различные записи. Как решить, не могу пока додуматься.
  • Вопрос задан
  • 230 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT ...
  FROM `products` AS `p`
  JOIN `product_attributes` AS `pa1` ON `pa1`.`attribute_id` = :attr1
    AND `pa1`.`attribute_value` = :val1 AND `pa1`.`product_id` = `p`.`id`
  JOIN `product_attributes` AS `pa2` ON `pa2`.`attribute_id` = :attr2
    AND `pa2`.`attribute_value` = :val2 AND `pa2`.`product_id` = `p`.`id`
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы