MySQL
impossible de permuter la table principale et la table pilotée dans le IN
clause. Cela va être corrigé dans 6.0
.
Pour l'instant, vous pouvez le réécrire comme ceci (nécessite 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
Puisque vous utilisez le EAV
modèle, vous voudrez peut-être créer un index unique sur (attribute_name, item_id)
auquel cas vous pouvez utiliser une jointure simple :
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'