サブクエリは次のようになります:
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
このソリューションは、GROUPBYサブクエリを使用します。 ORを使用する必要があります。これは、同じ行で属性を同時にMemoryとColorにすることはできないため、両方ともtrueである可能性がありますが、異なる行である可能性があります。 COUNT(DISTINCT attributes.name)は、ColorまたはMemoryのいずれかの属性の数をカウントします。2の場合、最初の条件が真である行が少なくとも1つあり、他の条件も真である行が1つあります。