Uw subquery zou er als volgt uit moeten zien:
SELECT
attributes_entity.product_id
FROM
attributes_entity INNER JOIN attributes
ON attributes_entity.attribute_id=attributes.id
INNER JOIN attributes_values ON
attributes_entity.value_id=attributes_values.id
WHERE
(attributes.name="Memory" AND attributes_values.value="16GB")
OR
(attributes.name="Color" AND attributes_values.value="Gold")
GROUP BY
attributes_entity.product_id
HAVING
COUNT(DISTINCT attributes.name)=2
deze oplossing maakt gebruik van een GROUP BY subquery. U moet OR gebruiken omdat het attribuut niet tegelijkertijd Geheugen en Kleur in dezelfde rij kan zijn, ze kunnen beide waar zijn, maar in verschillende rijen. COUNT(DISTINCT attributes.name) telt het aantal attributen dat ofwel Kleur ofwel Geheugen is, als het 2 is, dan is er minstens 1 rij waar de eerste voorwaarde waar is en 1 rij waar de andere ook waar is.