Ich denke, dass Sie hinter diesem her sind:
SELECT image_id
FROM list
WHERE (style_id, style_value) IN ((24,'red'),(25,'big'),(27,'round'))
GROUP BY image_id
HAVING count(distinct style_id, style_value)=3
Sie können AND nicht verwenden, da Werte nicht 24 red
sein können und 25 big
und 27 round
gleichzeitig in derselben Zeile, aber Sie müssen das Vorhandensein von style_id, style_value
überprüfen in mehreren Zeilen unter derselben image_id
.
In dieser Abfrage verwende ich IN (das in diesem speziellen Beispiel einem ODER entspricht), und ich zähle die unterschiedlichen Zeilen, die übereinstimmen. Wenn 3 eindeutige Zeilen übereinstimmen, bedeutet dies, dass alle 3 Attribute für diese image_id
vorhanden sind , und meine Abfrage wird es zurückgeben.