Hallo liebes Forum,
seit Stunden quält mich eine Query die einfach nicht das ausspuckt was sie soll. Vielleicht kann einer von euch weiterhelfen.
Etwas vereinfacht:
Tabelle "Dinger" (id, name, ding_art, sachen_count)
Tabelle "Sachen" (id, name)
Tabelle "Dinger_Sachen" (ding_id, sache_id)
Leicht zu erkennen: Ein Ding ist von einer ding_art und kann mehrere Sachen haben (Zwecks Optimierung wird die Anzahl der Sachen in sachen_count mitgespeichert).
Meine Anfrage: "Zu einer Menge von 'Sachen' gib mir alle 'Dinger' einer 'ding_art' die _mindestens_ _alle_ diese 'Sachen' haben"
Mein Ansatz bisher:
SELECT * FROM Dinger d
WHERE d.ding_art='tolles-ding'
AND d.sachen_count =
(SELECT COUNT(ds.sache_id) FROM Dinger_Sachen ds
WHERE ds.ding_id = d.id
AND ds.sache_id IN ("ids der geforderten Sachen")
GROUP BY ds.sache_id
HAVING COUNT(ds.sache_id) = d.sachen_count)
Naja, es spuckt einfach irgendwie nur die Dinger aus die nur eine Sache haben. Ich hab natürlich alle möglichen Variationen dieses Ansatzes probiert, wahrscheinlich ist er von Grund auf falsch...
Vieleicht weiß jemand von euch weiter... ?
Grüße Heinz