Task #5 should mostly work now

This commit is contained in:
Administrator 2022-05-18 21:30:11 +02:00
parent be0cd1b6f2
commit 728490d51f

View File

@ -39,7 +39,6 @@ FROM Menu
GROUP BY Menuname);
# TODO Compare Menu_Naehrwerte.Allergene and Menu_Naehrwerte.Zusatzstoff with Allergie and Zusatzstoffunverträglichkeit
DROP VIEW IF EXISTS Aufgabe_5;
CREATE VIEW Aufgabe_5 AS
(
@ -47,14 +46,72 @@ SELECT Personenvorname,
Personenname,
Naehrwertziel,
MN.Brennwert,
CONCAT(MN.Brennwert / Naehrwertziel * 100, '%') AS Naehrwertziel_Prozent,
CONCAT(ROUND(MN.Brennwert / Naehrwertziel * 100, 2), '%') AS Naehrwertziel_Prozent,
MN.Fett,
MN.Kohlenhydrate,
MN.Eiweiss,
IF(MN.Brennwert / Naehrwertziel * 100 <= 100, 'OK', 'Naehrwertziel überschritten') AS Naehrwert_OK,
M.Menuname,
Allergene,
Zusatzstoff
IF((SELECT COUNT(*)
FROM (SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(Allergene, ', ', n.digit + 1), ', ', -1) AS Allergen
FROM Menu_Naehrwerte
INNER JOIN
(SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
ON LENGTH(REPLACE(Allergene, ', ', '')) <= LENGTH(Allergene) - n.digit
WHERE Menuname = M.Menuname
UNION ALL
SELECT Allergenbezeichnung
FROM Allergie AS A20
JOIN Allergen A10 on A20.AllergenID = A10.AllergenID
JOIN Person P10 on A20.PersonID = P10.PersonID
WHERE Personenname = P.Personenname) as u_all) = (SELECT COUNT(*)
FROM (SELECT DISTINCT SUBSTRING_INDEX(
SUBSTRING_INDEX(Allergene, ', ', n.digit + 1),
', ', -1) AS Allergen
FROM Menu_Naehrwerte
INNER JOIN
(SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
ON LENGTH(REPLACE(Allergene, ', ', '')) <= LENGTH(Allergene) - n.digit
WHERE Menuname = M.Menuname
UNION
SELECT Allergenbezeichnung
FROM Allergie AS A20
JOIN Allergen A10 on A20.AllergenID = A10.AllergenID
JOIN Person P10 on A20.PersonID = P10.PersonID
WHERE Personenname = P.Personenname) as u),
'OK',
'Allergenhaltiges Produkt konsumiert') AS 'Allergene_OK',
IF((SELECT COUNT(*)
FROM (SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(Zusatzstoff, ', ', n.digit + 1), ', ',
-1) AS Zusatzstoff
FROM Menu_Naehrwerte
INNER JOIN
(SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
ON LENGTH(REPLACE(Zusatzstoff, ', ', '')) <= LENGTH(Zusatzstoff) - n.digit
WHERE Menuname = M.Menuname
UNION ALL
SELECT Z.E_Nummer
FROM Zusatzstoffunvertraeglichkeit AS Z20
JOIN Zusatzstoff Z on Z20.E_Nummer = Z.E_Nummer
JOIN Person P10 on Z20.PersonID = P10.PersonID
WHERE Personenname = P.Personenname) as u_all) = (SELECT COUNT(*)
FROM (SELECT DISTINCT SUBSTRING_INDEX(
SUBSTRING_INDEX(Zusatzstoff, ', ', n.digit + 1),
', ',
-1) AS Zusatzstoff
FROM Menu_Naehrwerte
INNER JOIN
(SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
ON LENGTH(REPLACE(Zusatzstoff, ', ', '')) <=
LENGTH(Zusatzstoff) - n.digit
WHERE Menuname = M.Menuname
UNION
SELECT Z.E_Nummer
FROM Zusatzstoffunvertraeglichkeit AS Z20
JOIN Zusatzstoff Z on Z20.E_Nummer = Z.E_Nummer
JOIN Person P10 on Z20.PersonID = P10.PersonID
WHERE Personenname = P.Personenname) as u),
'OK',
'Zusatzstoffhaltiges Produkt konsumiert') AS 'Zusatzstoff_OK'
FROM konsumiert
JOIN Menu M on M.MenuID = konsumiert.MenuID
JOIN Person P on P.PersonID = konsumiert.PersonID