Ich habe drei Tabellen. Denken Sie an sie als die folgenden:Wie kann ich alle Zeilen in einer Tabelle finden, die ausschließlich verknüpfte Zeilen in einer bestimmten Liste enthalten?
Recipes
id | name
1 | Cookies
2 | Soup
...
Ingredients
id | name
1 | flour
2 | butter
3 | chicken
...
Recipe_Ingredient
recipe_id | ingredient_id
1 | 1
1 | 2
2 | 3
Hoffentlich bekommen Sie die Idee. Was ich möchte ist eine Abfrage, wo ich alle Rezepte finden kann, die Zutaten haben, die eine Teilmenge einer bestimmten Reihe von Zutaten sind.
Die Idee ist, dass ich eine Liste aller Dinge haben möchte ich mit dem, was ich habe auf der Hand machen kann (aber natürlich nicht alles was ich habe auf der Hand.)
Ich habe versucht, die Umsetzung dieses mit verschiedene Ebenen von Unterabfragen und korrelierte Unterabfragen mit EXISTS hatten aber kein Glück. Ich habe auch versucht, HAVING und COUNT zu verwenden, aber das scheint nur für mich zu funktionieren, wenn ich etwas möchte, das ALLE Zutaten verwendet, die ich zur Hand habe.
Sie wollen also Rezepte, die alle ihre Zutaten in der Liste der "verfügbaren" Zutaten sind. Probiere das [sql-match-all] -Tag oder die Links rechts unter ** Related ** header. –
Dies wird [SQL der Relationalen Abteilung] genannt (http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/) –
@ypercube wow, fantastisch. Ja, genau das habe ich versucht, aber ich muss meine Logik irgendwie durcheinander gebracht haben. Danke für die tolle Verbindung –