Truy vấn con của bạn sẽ như thế này:
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
giải pháp này sử dụng truy vấn con GROUP BY. Bạn phải sử dụng HOẶC vì thuộc tính không thể là Bộ nhớ và Màu cùng một lúc trên cùng một hàng, cả hai đều có thể đúng nhưng trên các hàng khác nhau. COUNT (DISTINCT properties.name) đếm các thuộc tính số của Màu hoặc Bộ nhớ, nếu là 2 thì có ít nhất 1 hàng trong đó điều kiện đầu tiên là đúng và 1 hàng trong đó điều kiện còn lại cũng đúng.