AUFGABE 4.3 IST TEUFLISCH

This commit is contained in:
Leon Amtmann 2022-05-18 19:11:17 +02:00
parent 6b73808006
commit 4000eddd4c

View File

@ -39,18 +39,37 @@ GROUP BY Menuname;
Geben sie mit SQL alle Produkte mit für Kundinnen und Kunden relevanten Informationen für 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.). eine bestimmte Person aus (betreffend Allergenen, Unverträglichkeiten, vegetarisch, etc.).
----------------------------------------------------------------------- -----------------------------------------------------------------------
TODO Redo
*/ */
SELECT Personenvorname, SET @vorname := 'Florian';
Personenname, SET @nachname := 'Kaiser';
GROUP_CONCAT(DISTINCT P.Produktname SEPARATOR ', ')
# 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 FROM Person
JOIN Allergie A on Person.PersonID = A.PersonID # Zusatzstoffe
JOIN Allergen A2 on A.AllergenID = A2.AllergenID JOIN Zusatzstoffunvertraeglichkeit on Person.PersonID = Zusatzstoffunvertraeglichkeit.PersonID
JOIN enthaeltAllergen eA on A2.AllergenID = eA.AllergenID JOIN enthaeltZusatzstoff on enthaeltZusatzstoff.E_Nummer = Zusatzstoffunvertraeglichkeit.E_Nummer
JOIN Produkt P on eA.ProduktID = P.ProduktID LEFT JOIN Produkt on Produkt.ProduktID = enthaeltZusatzstoff.ProduktID
JOIN enthaeltZusatzstoff eZ on P.ProduktID = eZ.ProduktID WHERE Personenname = @nachname
GROUP BY Personenvorname, Personenname; 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;
/* /*