Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL lutando com a consulta em um para muitos relacionamentos combinando várias condições


Este é um divisão relacional problema.

A maneira como você sugere com o COUNT é provavelmente o mais fácil no 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

Existe outra abordagem com duplo NOT EXISTS no artigo vinculado, mas como o MySQL não suporta CTEs, isso seria bastante complicado.