MySQL non può cambiare la tabella principale e quella guidata nel IN clausola. Questo verrà corretto in 6.0
.
Per ora, puoi riscriverlo in questo modo (richiede un 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
Dato che stai usando il EAV modello potresti voler creare un indice univoco su (attribute_name, item_id) nel qual caso puoi usare un join semplice:
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'