Wie viele Rezepte kannst du nur mit Milch, Eiern, Butter, Mehl, Zucker und Salz machen?

8

Ich habe eine SQL-Abfrage, die mich ratlos hat. Im Grunde habe ich eine Recipes -Tabelle, die (wie Sie sicher vermutet haben) viele Rezepte enthält. Ich habe eine Tabelle Ingredients , die alle Arten von Zutaten enthält. Ich habe eine RecipeIngredients -Tabelle, die ein Rezept mit den verwendeten Zutaten verknüpft. Schließlich habe ich eine PopularIngredients -Tabelle (es ist eigentlich eine Ansicht, aber wen interessiert das?), Die die beliebtesten Zutaten enthält, die Leute in ihrer Küche haben könnten:

%Vor%

Mein Ziel ist es, eine Liste aller Rezepte zu erhalten, die nur beliebte Zutaten verwenden.

Eine SQL-Geige mit Beispieldaten finden Sie hier .

Was ich suche, ist eine Abfrage, die Hühnersalat und Pfannkuchen zurückgibt. Aligator Burgers würde nicht zurückgegeben werden, da aligator verwendet wird, das keine beliebte Zutat ist.

Ich habe ein paar Dinge ausprobiert, die Sub-Selects und das ALL -Schlüsselwort betreffen, aber ich hatte kein Glück. Ich habe verschiedene innere und äußere Verbindungen ausprobiert, aber Rezept-Reihen werden immer noch angezeigt, solange mindestens eine ihrer Zutaten beliebt ist. Jede Hilfe würde sehr geschätzt werden!

Ich benutze Postgres 9.1.

    
Mike Christensen 16.08.2012, 00:39
quelle

3 Antworten

7

Damit werden alle Rezepte abgerufen, die keine Zutaten enthalten, die nicht in der Tabelle PopularIngredients enthalten sind.

%Vor%     
Blorgbeard 16.08.2012, 00:52
quelle
5

Verwendet WHERE NOT EXISTS , um sicherzustellen, dass keine der verwendeten Zutaten in der PopularIngredients-Ansicht fehlt:

%Vor%

Ihr SQLFiddle

wurde aktualisiert     
Bort 16.08.2012 00:53
quelle
2
%Vor%

oder fast gleich

%Vor%     
dbenham 16.08.2012 01:10
quelle

Tags und Links