From 6b0d013ce786904d271b7ac94e444fb708ca19d2 Mon Sep 17 00:00:00 2001 From: H4CK3R-01 Date: Wed, 11 May 2022 16:19:05 +0200 Subject: [PATCH] Added some sql commands --- Lösung/Aufgabe 3.sql | 2 ++ Lösung/Aufgabe 4.sql | 82 ++++++++++++++++++++++++++++++++++++++++++++ Lösung/Aufgabe 5.sql | 13 +++++++ 3 files changed, 97 insertions(+) create mode 100644 Lösung/Aufgabe 4.sql create mode 100644 Lösung/Aufgabe 5.sql diff --git a/Lösung/Aufgabe 3.sql b/Lösung/Aufgabe 3.sql index 3420f40..8951399 100644 --- a/Lösung/Aufgabe 3.sql +++ b/Lösung/Aufgabe 3.sql @@ -1,3 +1,5 @@ +USE project; + /* ---------------------------------- Zusatzstoffklasse ---------------------------------- */ diff --git a/Lösung/Aufgabe 4.sql b/Lösung/Aufgabe 4.sql new file mode 100644 index 0000000..1574db1 --- /dev/null +++ b/Lösung/Aufgabe 4.sql @@ -0,0 +1,82 @@ +USE project; + +/* +---------------------------------- 1 ---------------------------------- +Geben Sie mit SQL alle Menüs mit den darin enthaltenen Produkten menschenlesbar +als eine Art Speisekarte aus. +----------------------------------------------------------------------- +*/ +SELECT Menuname, GROUP_CONCAT(Produktname SEPARATOR ', ') AS 'Produkte' +FROM Menu + JOIN Menucontent M on Menu.MenuID = M.MenuID + JOIN Produkt P on M.ProduktID = P.ProduktID +GROUP BY Menuname; + + +/* +---------------------------------- 2 ---------------------------------- +Erweitern Sie die Ausgabe aus der vorherigen Abfrage um hilfreiche Informationen +bezüglich der Gesamtnährwerte dieser Menüs. +----------------------------------------------------------------------- +*/ +SELECT Menuname, + GROUP_CONCAT(Produktname SEPARATOR ', ') AS 'Produkte', + SUM(Fett) AS 'Fett', + SUM(Kohlenhydrate) AS 'Kohlenhydrate', + SUM(Eiweiss) AS 'Eiweiss', + SUM(Brennwert) AS 'Brennwert' +FROM Menu + JOIN Menucontent M on Menu.MenuID = M.MenuID + JOIN Produkt P on M.ProduktID = P.ProduktID + JOIN Naehrwerte N on P.ProduktID = N.ProduktID +GROUP BY Menuname; + + +/* +---------------------------------- 3 ---------------------------------- +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 Vegetarisch? Wo finden wir Informationen zu den Produkten? +*/ +SELECT Personenvorname, + Personenname, + CONCAT_WS(', ', GROUP_CONCAT(DISTINCT Allergenbezeichnung SEPARATOR ', '), + GROUP_CONCAT(DISTINCT Zusatzstoffbezeichnung SEPARATOR ', ')) +FROM Person + JOIN Allergie A on Person.PersonID = A.PersonID + JOIN Allergen A2 on A.AllergenID = A2.AllergenID + JOIN Zusatzstoffunvertraeglichkeit Z on Person.PersonID = Z.PersonID + JOIN Zusatzstoff Z2 on Z2.E_Nummer = Z.E_Nummer +GROUP BY Personenvorname, Personenname; + + +/* +---------------------------------- 4 ---------------------------------- +Sortieren Sie alle enthaltenen Produkte absteigend nach Anzahl der enthaltenen Zusatzstoffe. +----------------------------------------------------------------------- +*/ +SELECT Produktname, + LENGTH(GROUP_CONCAT(E_Nummer)) - LENGTH(REPLACE(GROUP_CONCAT(E_Nummer), ',', '')) + 1 AS 'Anzahl Zusatzstoffe' +FROM Produkt + JOIN enthaeltZusatzstoff eZ on Produkt.ProduktID = eZ.ProduktID +GROUP BY Produktname +ORDER BY LENGTH(GROUP_CONCAT(E_Nummer)) - LENGTH(REPLACE(GROUP_CONCAT(E_Nummer), ',', '')) + 1 DESC; + + +/* +---------------------------------- 5 ---------------------------------- +Sortieren Sie alle enthaltenen Produkte aufsteigend nach Kalorienanzahl in der Portion, die verkauft wird. +----------------------------------------------------------------------- +*/ + + +/* +---------------------------------- 6 ---------------------------------- +Geben Sie eine SQL Anfrage an, die alle Produkte ausgibt, die eine bestimmte Anzahl von Emulgatoren enthalten. + a. Keine Emulgatoren + b. 1 Emulgator + c. 2 Emulgatoren + d. Mehr +----------------------------------------------------------------------- +*/ diff --git a/Lösung/Aufgabe 5.sql b/Lösung/Aufgabe 5.sql new file mode 100644 index 0000000..3505b77 --- /dev/null +++ b/Lösung/Aufgabe 5.sql @@ -0,0 +1,13 @@ +USE project; + +/* +---------------------------------- 1 ---------------------------------- +Zu jeder Person soll aufgezeichnet werden, wann dies Person wieviel von +welchem Produkt zu sich nimmt. Daraus soll eine Sicht erstellt werden, die anzeigt, wie viel +Prozent der Tagesmenge erreicht wurde und wieviel von welchen Nährstoffen konsumiert +wurde. Idealerweise gibt es ein Rechtekonzept dafür (ggfs. als SQL-Kommentar im Skript). +Wird dabei gegen Vorgaben (Kalorienvorgaben, vegetarisch, Allergene, etc.) verstoßen, so +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. +----------------------------------------------------------------------- +*/