Vinzenz: NEwbee Frage zur Abfrage einer MySql Datenbank

Beitrag lesen

Hallo Beacker,

  1. Kochrezept
       rezept_id
       rezept
  2. Zutaten
       zutaten_id
       zutat
  3. Zuordnung von Zutaten auf jeweiliges Rezept
       rezept_id
       zutaten_id
       menge

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

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