MySQL
kan de leidende en de aangestuurde tabel niet omwisselen in de IN
clausule. Dit wordt gecorrigeerd in 6.0
.
Voor nu kun je het zo herschrijven (vereist een 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
Aangezien u de EAV
. gebruikt model wilt u misschien een unieke index maken op (attribute_name, item_id)
in dat geval kun je een gewone join gebruiken:
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'