MySQL
no se puede cambiar la tabla principal y la conducida en IN
cláusula. Esto será corregido en 6.0
.
Por ahora, puede reescribirlo así (requiere JOIN
):
SELECT i.*
FROM (
SELECT DISTINCT item_id
FROM item_attributes a
WHERE a.attribute_name = 'SomeAttribute'
AND a.attribute_value = 'SomeValue'
) ai
JOIN items i
ON i.id = ai.item_id
Dado que está utilizando el EAV
modelo en el que puede querer hacer un índice único en (attribute_name, item_id)
en cuyo caso puede usar una combinación simple:
SELECT i.*
FROM item_attributes ai
JOIN items i
ON i.id = ai.item_id
WHERE a.attribute_value = 'SomeValue'
AND a.attribute_name = 'SomeAttribute'