86 lines
2.2 KiB
Markdown
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 på 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;
|
|
```
|