SQL Hilfe

Kufstein

B1G-Software-Kunde
#1
Hoi zusammen.

Ich probiere eine Rückwärssuche für Cocktails zu programmieren, weis aber noch nicht genau wie ich das anstellen soll.

Ich will eingeben was ich an zutaten habe und er spuckt mir aus was ich damit machen kann.

Ich bin davon ausgegangen dass ich drei Tabellen brauche.

Einmal die Tabelle wo die Cocktails aufgelistet ist, die sieht so aus:

ID int(4) <--- Primärschlüssel
name varchar(200) <--- Name des Cocktails
zutaten text <---- Zutaten im Feitext (d.H. hier sollte nicjts durchsucht werden)
zubereitung text <-- Anweisung für die Zubereitung
art int(2) Nein <--- Kennziffer Art des Cocktails
bild varchar(200) <--- Pfad für ein Bild
video varchar(200) <--- Pfad für ein Bild
menge int(2) <--- Anzahl der benötigten Zutaten


Dann noch die Tabelle wo alle Zutaten drinne sind:
ID int(4) <--- Primärschlüssel
name varchar(200) <--- Name der Zutat
preis int(8) <--- Preis für die Zutat
art int(3) <--- Art der Zutat
menge int(5) <--- Menge pro Einheit (z.B 1000ml)

Und die letzte Tabelle hat die Verknüpfungen was welche Zutaten brauch:

ID int(8) <--- Schlüssel
cocktail int(8) <---- ID des Cocktails
zutat int(8) <---- Zutat die benötigt wird
menge int(8) <--- Menge der Zutat

Der Inhalt sieht nachher dann pro Cocktail so aus:
ID cocktail zutat menge
1 1 1 40
2 1 2 40
3 1 3 40
4 1 4 40
5 1 5 40
6 1 6 40


Jetzt meine Frage:

Wie muss der SQL-Syntax heissen, so dass ich sagen kann ich hab Zutat 1,2,4,5 und 6 , zeig mir alle Cocktailids an, die ich damit machen kann?

Vielen Dank schon im vorraus für jeden Denkanstoss und forhe Festtage.

Gruss
 

UNC

B1G-Software-Kunde
#2
Ganz grob:
Code:
SELECT DISTINCT cocktail.* FROM ingredient
INNER JOIN cocktailingredient ON ingredient.ID = cocktailingredient.zutat
INNER JOIN cocktail ON cocktail.ID = cocktailingredient.cocktail
WHERE ingredient.name IN ('zitrone', 'banane', 'eis')
Und jetzt bitte nicht (nur) kopieren, sondern versuchen zu verstehen ;)
 

Kufstein

B1G-Software-Kunde
#3
Ganz grob:
Code:
SELECT DISTINCT cocktail.* FROM ingredient
INNER JOIN cocktailingredient ON ingredient.ID = cocktailingredient.zutat
INNER JOIN cocktail ON cocktail.ID = cocktailingredient.cocktail
WHERE ingredient.name IN ('zitrone', 'banane', 'eis')
Und jetzt bitte nicht (nur) kopieren, sondern versuchen zu verstehen ;)
Ahhh, okay der Schlüssel ist glaub ingredient.... Habs glaub kapiert, muss mal schnell nachlesen was ingredient genau macht..

Vielen Dank und Gruss
 
Top