Dit is een relationele verdeling probleem.
De manier die u voorstelt met de COUNT
is waarschijnlijk de gemakkelijkste in 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
Er is een andere benadering met dubbel NOT EXISTS
in het gelinkte artikel, maar aangezien MySQL geen CTE's ondersteunt, zou dat behoorlijk omslachtig zijn.