--- geometry: margin=30mm author: Felix Albrigtsen ... # EER-modell ![EER-modell](eer_modell.png) # Relasjonsmodell kunde(kunde\_id, navn, string) ordre(ordre\_id, kunde\_id\*, rabatt, betalingsstatus, ordredato, leveringsdato\_antatt, leveringsdato\_faktisk) bestilling(bestilling\_id, 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(spesialstol\_id, modellnavn, stoltype, pris) standardstol(standardstol_id, modellnavn, stoltype, pris, lagerantall) del(del\_id, spesialtstol\_id\*, deltype\_id\*, ferdigstilt) deltype(deltype\_id, navn, arbeidsstasjon\_id\*, antall, farge, pris, stoffbehov, beskrivelse) stoffrull(stoffrull\_id, deltype\_id\*, meter) arbeidsstasjon(arbeidsstasjon\_id, 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; ```