This commit is contained in:
Leon Amtmann 2022-05-18 19:31:09 +02:00
commit dd6c41e0f0

View File

@ -10,4 +10,52 @@ Wird dabei gegen Vorgaben (Kalorienvorgaben, vegetarisch, Allergene, etc.) verst
soll das in der Sicht angezeigt werden. Wenn der Tag ok ist, soll das markiert werden, soll das in der Sicht angezeigt werden. Wenn der Tag ok ist, soll das markiert werden,
ansonsten soll angezeigt werden, gegen was verstoßen wurde. ansonsten soll angezeigt werden, gegen was verstoßen wurde.
----------------------------------------------------------------------- -----------------------------------------------------------------------
Rechtekonzept:
Als normaler Benutzer sollte man nur Zugriff auf seine eigenen Daten haben.
Als privilegierter Nutzer (z.B. Admin) kann man alle Daten sehen
*/ */
DROP VIEW IF EXISTS Menu_Naehrwerte;
CREATE VIEW Menu_Naehrwerte AS
(
SELECT Menuname,
GROUP_CONCAT(DISTINCT Produktname SEPARATOR ', ') AS 'Produkte',
ROUND(SUM(Fett * (SELECT Menge FROM Menge WHERE MengenID = M.MengenID) / 100), 2) AS 'Fett',
ROUND(SUM(Kohlenhydrate * (SELECT Menge FROM Menge WHERE MengenID = M.MengenID) / 100), 2) AS 'Kohlenhydrate',
ROUND(SUM(Eiweiss * (SELECT Menge FROM Menge WHERE MengenID = M.MengenID) / 100), 2) AS 'Eiweiss',
ROUND(SUM(Brennwert * (SELECT Menge FROM Menge WHERE MengenID = M.MengenID) / 100), 2) AS 'Brennwert',
GROUP_CONCAT(DISTINCT Allergenbezeichnung SEPARATOR ', ') AS 'Allergene',
GROUP_CONCAT(DISTINCT E_Nummer SEPARATOR ', ') AS 'Zusatzstoff'
FROM Menu
JOIN Menucontent M on Menu.MenuID = M.MenuID
JOIN Menge M3 on M.MengenID = M3.MengenID
JOIN Produkt P on M3.ProduktID = P.ProduktID
JOIN Naehrwerte N on P.ProduktID = N.ProduktID
JOIN enthaeltAllergen eA on P.ProduktID = eA.ProduktID
JOIN Allergen A on A.AllergenID = eA.AllergenID
LEFT JOIN enthaeltZusatzstoff eZ on P.ProduktID = eZ.ProduktID
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
(
SELECT Personenvorname,
Personenname,
Naehrwertziel,
MN.Brennwert,
CONCAT(MN.Brennwert / Naehrwertziel * 100, '%') 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
FROM konsumiert
JOIN Menu M on M.MenuID = konsumiert.MenuID
JOIN Person P on P.PersonID = konsumiert.PersonID
JOIN Menu_Naehrwerte MN on M.Menuname = MN.Menuname);