From 4000eddd4cc5fd706e577bcd0d9f829c0a018fab Mon Sep 17 00:00:00 2001 From: Leon Amtmann Date: Wed, 18 May 2022 19:11:17 +0200 Subject: [PATCH] AUFGABE 4.3 IST TEUFLISCH --- Lösung/Aufgabe 4.sql | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/Lösung/Aufgabe 4.sql b/Lösung/Aufgabe 4.sql index d72c84c..4288d86 100644 --- a/Lösung/Aufgabe 4.sql +++ b/Lösung/Aufgabe 4.sql @@ -39,18 +39,37 @@ GROUP BY Menuname; Geben sie mit SQL alle Produkte mit für Kundinnen und Kunden relevanten Informationen für eine bestimmte Person aus (betreffend Allergenen, Unverträglichkeiten, vegetarisch, etc.). ----------------------------------------------------------------------- -TODO Redo */ -SELECT Personenvorname, - Personenname, - GROUP_CONCAT(DISTINCT P.Produktname SEPARATOR ', ') -FROM Person - JOIN Allergie A on Person.PersonID = A.PersonID - JOIN Allergen A2 on A.AllergenID = A2.AllergenID - JOIN enthaeltAllergen eA on A2.AllergenID = eA.AllergenID - JOIN Produkt P on eA.ProduktID = P.ProduktID - JOIN enthaeltZusatzstoff eZ on P.ProduktID = eZ.ProduktID -GROUP BY Personenvorname, Personenname; +SET @vorname := 'Florian'; +SET @nachname := 'Kaiser'; + +# UNION von Nur Zusatzstoffe und Nur Allergene +SELECT Produktname, GROUP_CONCAT(Zusatzstoff) AS Zusatzstoff, GROUP_CONCAT(Allergen) AS Allergen +FROM (SELECT Produktname, + GROUP_CONCAT(enthaeltZusatzstoff.E_Nummer) as Zusatzstoff, + NULL Allergen + FROM Person + # Zusatzstoffe + JOIN Zusatzstoffunvertraeglichkeit on Person.PersonID = Zusatzstoffunvertraeglichkeit.PersonID + JOIN enthaeltZusatzstoff on enthaeltZusatzstoff.E_Nummer = Zusatzstoffunvertraeglichkeit.E_Nummer + LEFT JOIN Produkt on Produkt.ProduktID = enthaeltZusatzstoff.ProduktID + WHERE Personenname = @nachname + AND Personenvorname = @vorname + GROUP BY Produktname + UNION ALL + SELECT P.Produktname, + NULL Zusatzstoff, + GROUP_CONCAT(DISTINCT Allergenbezeichnung SEPARATOR ', ') AS Allergen + FROM Person + # Allergien + JOIN Allergie on Person.PersonID = Allergie.PersonID + JOIN Allergen on Allergen.AllergenID = Allergie.AllergenID + JOIN enthaeltAllergen on Allergen.AllergenID = enthaeltAllergen.AllergenID + JOIN Produkt P on P.ProduktID = enthaeltAllergen.ProduktID + WHERE Personenname = @nachname + AND Personenvorname = @vorname + GROUP BY Produktname) AS x +GROUP BY Produktname; /*