Alles bis auf 11 2b)

This commit is contained in:
Robert
2023-11-24 20:04:07 +01:00
parent 6ef64f0f4e
commit d2f6e02b4b
12 changed files with 2001 additions and 20 deletions

View File

@@ -52,4 +52,67 @@ INSERT INTO gericht_hat_kategorie VALUES (21, 3);
```
# Aufgabe 6
## Abfragen
1) Alle Gerichte mit allen zugehörigen Allergenen
``` sql
SELECT DISTINCT name, GROUP_CONCAT(code) FROM gericht g JOIN gericht_hat_allergen a ON g.id = a.gericht_id GROUP BY name ASC;
```
2) Ändern Sie die vorherige Abfrage so ab, dass alle existierenden Gerichte dargestellt werden (auch wenn keine Allergene enthalten sind).
``` sql
SELECT DISTINCT name, GROUP_CONCAT(code) FROM gericht g LEFT JOIN gericht_hat_allergen a ON g.id = a.gericht_id GROUP BY name ASC;
```
3) Ändern Sie die vorherige Abfrage so ab, so dass im Ergebnis alle existierenden Allergene dargestellt werden (auch wenn diese nicht einem Gericht zugeordnet sind).
``` sql
SELECT DISTINCT allergen.code, GROUP_CONCAT(gericht.name) AS gericht FROM allergen LEFT JOIN gericht_hat_allergen on allergen.code = gericht_hat_allergen.code LEFT JOIN gericht ON gericht_hat_allergen.gericht_id = gericht_id
GROUP BY allergen.name
ORDER BY code ASC;
```
4) Die Anzahl der Gerichte pro Kategorie aufsteigend sortiert nach Anzahl.
``` sql
SELECT kategorie.name, COUNT(kategorie_id) AS anzahl FROM gericht_hat_kategorie, kategorie
WHERE kategorie.id = gericht_hat_kategorie.kategorie_id
GROUP BY kategorie_id
ORDER BY anzahl ASC;
```
5) Ändern Sie die vorherige Abfrage so ab, dass dabei nur die Kategorien dargestellt werden, die mehr als 2 Gerichte besitzen.
``` sql
SELECT kategorie.name, COUNT(kategorie_id) AS anzahl FROM gericht_hat_kategorie, kategorie
WHERE kategorie.id = gericht_hat_kategorie.kategorie_id AND kategorie_id > 2
GROUP BY kategorie_id
ORDER BY anzahl ASC;
```
# Aufgabe 7
elter_kategorie:
``` sql
FOREIGN KEY (id) REFERENCES kategorie(id),
```
gericht_hat_allergen:
``` sql
code char(4),
FOREIGN KEY (code) REFERENCES allergen(code),
gericht_id int8 not null,
FOREIGN KEY (gericht_id) REFERENCES gericht(id)
```
gericht_hat_kategorie:
``` sql
gericht_id int8 not null,
FOREIGN KEY (gericht_id) REFERENCES gericht(id),
kategorie_id int8 not null,
FOREIGN KEY (kategorie_id) REFERENCES kategorie(id)
```
# Aufgabe 11
## Relationenmodell
Kontakte(\_KontaktId\_,Vorname, Nachname, Email, Telefonnummer, Anrede, Typ, )
Kunde(\_KontaktId\_)
Lieferant(\_KontaktId\_,Wochentag_fuer_Lieferzeitraum)