Added some sql commands

This commit is contained in:
Administrator 2022-05-11 16:19:05 +02:00
parent 12030840b7
commit 6b0d013ce7
3 changed files with 97 additions and 0 deletions

View File

@ -1,3 +1,5 @@
USE project;
/* /*
---------------------------------- Zusatzstoffklasse ---------------------------------- ---------------------------------- Zusatzstoffklasse ----------------------------------
*/ */

82
Lösung/Aufgabe 4.sql Normal file
View File

@ -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
-----------------------------------------------------------------------
*/

13
Lösung/Aufgabe 5.sql Normal file
View File

@ -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.
-----------------------------------------------------------------------
*/