Ich habe eine Frage, ob dieses Statement ok ist (im Sinne von performant, "sauber"):
Die Tabelle hat 2 Spalten: ID (Cocktail), ID Zutat)
Das heisst z.B. für Cocktail ID 1 gibt es z.B. 4 Einträge für 4 Zutaten.
Ich möchte nun nach Cocktail IDs suchen, die z.B. genau 4 bestimmte Zutaten enthalten.
Meine Idee: Zunächst alle Einträge herausfiltern, die die Zutaten enthalten.
Nach cocktail_id gruppieren und jene Gruppen herausfiltern, die 4 Einträge haben.
SELECT count(zutat_id ) AS anzahl, cocktail_id
FROM czutat
WHERE zutat_id IN (3,5,10,20)
GROUP BY cocktail_id
HAVING anzahl =7
order by cocktail_id
Dankeschön!
Die Tabelle hat 2 Spalten: ID (Cocktail), ID Zutat)
Das heisst z.B. für Cocktail ID 1 gibt es z.B. 4 Einträge für 4 Zutaten.
Ich möchte nun nach Cocktail IDs suchen, die z.B. genau 4 bestimmte Zutaten enthalten.
Meine Idee: Zunächst alle Einträge herausfiltern, die die Zutaten enthalten.
Nach cocktail_id gruppieren und jene Gruppen herausfiltern, die 4 Einträge haben.
SELECT count(zutat_id ) AS anzahl, cocktail_id
FROM czutat
WHERE zutat_id IN (3,5,10,20)
GROUP BY cocktail_id
HAVING anzahl =7
order by cocktail_id
Dankeschön!
Kommentar