N zu m Datenbankabfrage und keine Ahnung wie ich Abfragen soll
Ich habe folgendes Problem:
Tabelle 1
Rezepte
id
name
Tabelle 2
Zutaten
id
name
Tabelle 3
rezept_zutat
rid - RezeptID
zid = ZutatID
Bei der Anlage des Rezeptes füge ich für jede Zutat eine Zeile in der Tabelle 3 ein (z.B. rid 1 für Kuchen und zid 1 - Zucker, rid 1 und zid 2 für Mehl)
Ich möchte jetzt, dass er mir z.B. Rezept 1 - Kuchen mit all seinen Zutaten anzeigt. Er soll mir aber auch alle Zutaten anzeigen, die nicht zugewiesen sind, weil ich ja vielleicht später der Meinung bin, es könnte noch Schokolade dazu.
Mein Problem ist, dass ich keine Ahnung habe, wie ich die Abfrage angehen soll.
Kann mir jemand helfen?
Danke
Tabelle 1
Rezepte
id
name
Tabelle 2
Zutaten
id
name
Tabelle 3
rezept_zutat
rid - RezeptID
zid = ZutatID
Bei der Anlage des Rezeptes füge ich für jede Zutat eine Zeile in der Tabelle 3 ein (z.B. rid 1 für Kuchen und zid 1 - Zucker, rid 1 und zid 2 für Mehl)
Ich möchte jetzt, dass er mir z.B. Rezept 1 - Kuchen mit all seinen Zutaten anzeigt. Er soll mir aber auch alle Zutaten anzeigen, die nicht zugewiesen sind, weil ich ja vielleicht später der Meinung bin, es könnte noch Schokolade dazu.
Mein Problem ist, dass ich keine Ahnung habe, wie ich die Abfrage angehen soll.
Kann mir jemand helfen?
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204334
Url: https://administrator.de/forum/n-zu-m-datenbankabfrage-und-keine-ahnung-wie-ich-abfragen-soll-204334.html
Ausgedruckt am: 22.12.2024 um 19:12 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
gehen wir mal davon aus, das Rezept hat die ID 5 könnte die Abfrage in etwa so aussehen:
Select Zutat.name as Zutat, case when rid = 5 then 1 else 0 end as Zugewiesen,
Rezepte.Name as Rezept
from Zutaten left join rezept_zutat on
Zutaten.id = rezept_zutat.zid
left join Rezepte
on rezept_zutat.rid = Rezept.id
where rezept_zutat.rid = 5
/*
Zeige alle möglichen Zutaten zu einem Rezept 5 an und markiere die verwendeten Zutaten als zugewiesen.
Zeige zusätzlich den Namen des Rezeptes an.
*/
Gruss Grinskeks
gehen wir mal davon aus, das Rezept hat die ID 5 könnte die Abfrage in etwa so aussehen:
Select Zutat.name as Zutat, case when rid = 5 then 1 else 0 end as Zugewiesen,
Rezepte.Name as Rezept
from Zutaten left join rezept_zutat on
Zutaten.id = rezept_zutat.zid
left join Rezepte
on rezept_zutat.rid = Rezept.id
where rezept_zutat.rid = 5
/*
Zeige alle möglichen Zutaten zu einem Rezept 5 an und markiere die verwendeten Zutaten als zugewiesen.
Zeige zusätzlich den Namen des Rezeptes an.
*/
Gruss Grinskeks