MySQL
kan ikke skifte den ledende og den drevne tabel i IN
klausul. Dette vil blive rettet i 6.0
.
Indtil videre kan du omskrive det sådan her (kræver en 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 du bruger EAV
model vil du måske lave et unikt indeks på (attribute_name, item_id)
i så fald kan du bruge en almindelig join:
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'