MySQL
kan inte växla mellan den inledande och den drivna tabellen i IN
klausul. Detta kommer att korrigeras i 6.0
.
För nu kan du skriva om det så här (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
Eftersom du använder EAV
modell du kanske vill göra ett unikt index på (attribute_name, item_id)
i så fall kan du använda en vanlig 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'