Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL aux prises avec une requête dans une relation un à plusieurs correspondant à plusieurs conditions

Ceci est un division relationnelle problème.

La façon dont vous suggérez avec le COUNT est probablement le plus simple de MySQL

SELECT product_id
FROM product_attributes pa
WHERE (attribute='size' and value='medium')
OR (attribute='colour' and value='blue')
GROUP BY product_id
HAVING COUNT(DISTINCT CONCAT(attribute,value) ) = 2

Il existe une autre approche avec le double NOT EXISTS dans l'article lié mais comme MySQL ne prend pas en charge les CTE, ce serait assez lourd.