MySQL
kann die führende und die getriebene Tabelle im IN
nicht vertauschen Klausel. Dies wird in 6.0
korrigiert
.
Im Moment können Sie es so umschreiben (erfordert einen 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
Da Sie den EAV
verwenden model möchten Sie vielleicht einen eindeutigen Index für (attribute_name, item_id)
erstellen in diesem Fall können Sie einen einfachen Join verwenden:
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'