Seleccione productos por múltiples atributos, usando AND en lugar de concatenador OR, modelo de datos EAV

Tengo un problema con una consulta para el filtro de productos del sitio web de comercio electrónico.

Tengo un modelo de datos EAV como este:

products          [id, title....]
attributes        [id, name]
attributes_entity [product_id, attribute_id, value_id]
attributes_values [id, value]

Mi consulta:

SELECT 
products.id, 
products.title 
FROM 
products 
WHERE products.id IN 
(
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") 
>> AND
(attributes.name="Color" AND attributes_values.value="Gold")
)
) 
AND products.category_id = :category_id

El problema es que cuando estoy usando >> AND entre (atributos.name = "Memoria" Y atributos_valores.valor = "16GB") obtengo 0 resultados pero cuando estoy usando OR me da más resultados de los que necesito no relevante para estas 2 condiciones.

Por ejemplo, cuando recibo una solicitud: "Memoria = 16 GB y Color = Negro". Espero obtener iPhone 5 16BG Negro, no todos (oro, gris espacial, etc.) iPhones con 16GB

Estoy buscando un ejemplo de consulta, preferiblemente con una descripción de cómo funciona.

Saludos, Anton

Respuestas a la pregunta(1)

Su respuesta a la pregunta