Task #5 should mostly work now
This commit is contained in:
parent
be0cd1b6f2
commit
728490d51f
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user