NEwbee Frage zur Abfrage einer MySql Datenbank
Beacker
- datenbank
0 Vinzenz
Hallo,
habe Windows XP, MYsql, Php
Bräuchte einen kurzen Denkanstoss (kann ruhig kräftiger Anstoss sein;-)
HAbe z.B. eine Rezeot Datenbank mit Tabellen:
Jetzt schaue ich am Abend in die Vorratskammer und sehe, daß ich noch kartoffeln und Zucchini habe - und möchte natürlich alle Rezepte sehen, in denen Zucchini und Kartoffeln vorkommen. Wie muß ich da die Abfrage schreiben?
select rezept, zutate, rezept_id, zutaten_id from T_Rezept, T_Zutaten, T_Zuordnung where UND HIER SETZT ES AUS
Klar wenn ich nur nach Kartoffeln oder nach Zucchine suche aber wie läuft das wenn beide Zutaten gefunden werden müssen
Danke für die Hilfe,
Gonzo
Hallo Beacker,
- Kochrezept
rezept_id
rezept- Zutaten
zutaten_id
zutat- Zuordnung von Zutaten auf jeweiliges Rezept
rezept_id
zutaten_id
mengeJetzt schaue ich am Abend in die Vorratskammer und sehe, daß ich noch kartoffeln und Zucchini habe - und möchte natürlich alle Rezepte sehen, in denen Zucchini und Kartoffeln vorkommen. Wie muß ich da die Abfrage schreiben?
select rezept, zutate, rezept_id, zutaten_id from T_Rezept, T_Zutaten, T_Zuordnung where UND HIER SETZT ES AUS
Du suchst den INNER JOIN :-)
Du suchst OR oder IN
SELECT
rezept,
zutat,
FROM T_Rezept r
INNER JOIN T_Zuordnung zu ON r.rezept_id = zu.rezept_id
INNER JOIN T_Zutaten z ON zu.zutaten_id = z.zutaten_id
WHERE zutat IN ('Zucchini', 'Kartoffeln')
liefert alle Rezepte, in denen Zucchini oder Kartoffeln oder beides als Zutat auftauchen
Klar wenn ich nur nach Kartoffeln oder nach Zucchine suche aber wie läuft das wenn beide Zutaten gefunden werden müssen
Wenn beide Zutaten im Rezept sein _müssen_
dann suchst Du AND, zusätzlich musst Du die Spalte zutat zweimal in Deine Abfrage aufnehmen:
SELECT
rezept,
zutat AS z1,
zutat AS z2
FROM T_Rezept r
INNER JOIN T_Zuordnung zu ON r.rezept_id = zu.rezept_id
INNER JOIN T_Zutaten z ON zu.zutaten_id = z.zutaten_id
WHERE z1 LIKE 'Zucchini' AND z2 LIKE 'Kartoffeln'
Nicht getestet :-)
Freundliche Grüsse,
Vinzenz