idatt2103_databaser/ov7/losning.md

86 lines
2.2 KiB
Markdown

---
geometry: margin=30mm
author: Felix Albrigtsen
...
# EER-modell
![EER-modell](eer_modell.png)
# Relasjonsmodell
kunde(<u>kunde\_id</u>, navn, string)
ordre(<u>ordre\_id</u>, kunde\_id\*, rabatt, betalingsstatus, ordredato, leveringsdato\_antatt, leveringsdato\_faktisk)
bestilling(<u>bestilling\_id</u>, ordre\_id\*, antall, standardstol\_id\*, spesialstol\_id\*, stoffrull\_id)
> Merk! standardstol\_id og spesialstol\_id brukes som fremmednøkkel, men kan være NULL.
spesialstol(<u>spesialstol\_id</u>, modellnavn, stoltype, pris)
standardstol(<u>standardstol_id</u>, modellnavn, stoltype, pris, lagerantall)
del(<u>del\_id</u>, spesialtstol\_id\*, deltype\_id\*, ferdigstilt)
deltype(<u>deltype\_id</u>, navn, arbeidsstasjon\_id\*, antall, farge, pris, stoffbehov, beskrivelse)
stoffrull(<u>stoffrull\_id</u>, deltype\_id\*, meter)
arbeidsstasjon(<u>arbeidsstasjon\_id</u>, lokasjon)
# Oppgave 2 - SQL
## 2.1 Finn hvor mange (antallet) stolmodeller som finnes av hver stoltype.
```sql
SELECT stoltype, COUNT(modellnavn) FROM spesialstol
UNION
SELECT stoltype, COUNT(modellnavn) FROM standardstol
GROUP BY stoltype;
```
## 2.2 Ut fra alle registrerte ordre (bestillinger): Finn gjennomsnittlig antall bestilte stoler av hver stoltype.
```sql
SELECT AVG(antall) FROM (
SELECT b1.antall, sts.stoltype FROM bestilling b1
LEFT JOIN standardstol sts
ON b.standardstol_id = sts.standardstol_id
WHERE b1.spesialstol_id IS NULL
UNION
SELECT b2.antall, sps.stoltype FROM bestilling b2
LEFT JOIN spesialstol sps
ON b2.spesialstol_id = sps.spesialstol_id
WHERE b2.standardstol_id IS NULL
)
GROUP BY stoltype;
```
## 2.3 Finn det totale antallet stoler som finnes i bestilling, og som enda ikke er levert kunder. Tips: Sjekk reell leveringsdato (dvs. om ordren er effektuert)
```sql
SELECT SUM(b.antall) AS "Bestilte stoler, ikke levert"
FROM bestilling b
LEFT JOIN ordre o
ON b.ordre_id = o.ordre_id
WHERE o.leveringsdato_faktisk IS NULL;
```
## 2.4 Finn ut hvor mange (antallet) av stolene i spørring 3 over som er standardstoler.
```sql
SELECT SUM(b.antall) AS "Bestilte standardstoler, ikke levert"
FROM bestilling b
LEFT JOIN ordre o
ON b.ordre_id = o.ordre_id
WHERE o.leveringsdato_faktisk IS NULL
AND b.spesialstol_id IS NULL;
```