SQL spørresetninger (SELECT)
Tilbake
Vi har en database med fem tabeller, en tabell over leverandører (supplier), en tabell over
deler (part, vektene er oppgitt i g), en tabell over prosjekter (job), en tabell over hvilke leverandører som
kan levere hvilke deler i et gitt antall (sp) og en tabell over leveranser fra leverandører med deler til
prosjekter i et gitt antall (spj).
supplier(sid, sname, status, city)
part(pid, pname, color, weight, city)
job(jid, jname, city)
sp(sid, pid, qty)
spj(sid, pid, jid, qty)
For MySQL har jeg laget et script for å importere tabellene. Syntaksen i denne
filen er den samme som det mysqldump skriver ut så den kan derfor direkte importeres i mysql
med mysql -u user -p spj < spj.txt. Filen spj.txt lages ved "cut and paste".
Oppgavene nedenfor benytter derimot bare 3 tabeller (supplier, part og sp), og de er vist her:
| supplier: |
| sid |
sname |
status |
city |
| S1 |
Smith |
20 |
London |
| S2 |
Jones |
10 |
Paris |
| S3 |
Blake |
30 |
Paris |
| S4 |
Clark |
20 |
London |
| S5 |
Adams |
30 |
Athens |
|
part: |
| pid |
pname |
color |
weight |
city |
| P1 |
Nut |
Red |
12 |
London |
| P2 |
Bolt |
Green |
17 |
Paris |
| P3 |
Screw |
Blue |
17 |
Rome |
| P4 |
Screw |
Red |
14 |
London |
| P5 |
Cam |
Blue |
12 |
Paris |
| P6 |
Cog |
Red |
19 |
London |
|
sp: |
| sid |
pid |
qty |
| S1 |
P1 |
300 |
| S1 |
P2 |
200 |
| S1 |
P3 |
400 |
| S1 |
P4 |
200 |
| S1 |
P5 |
100 |
| S1 |
P6 |
100 |
| S2 |
P1 |
300 |
| S2 |
P2 |
400 |
| S3 |
P2 |
200 |
| S4 |
P2 |
200 |
| S4 |
P4 |
300 |
| S4 |
P5 |
400 |
|
Oppgaver
- Vis farge og by (uten duplikater) for deler som ikke er i Paris og veier mer enn 10 gram.
- Vis alle deler med vektene i kg.
- Vis kombinasjoner av leverandører og deler som finnes i samme by.
- Vis par av byer der en leverandør i den første byen har en del i den andre byen.
- Vis alle par av leverandørnummer som holder til i samme by.
- Vis antall leverandører som har delen P2 samt det minste og største antallet denne delen leveres i.
- Vis delenummer og det totale deler som alle leverandørene har.
- Vis delenummer for deler som har flere enn en leverandør.
- Vis navnet på leverandørene som har delen P2.
- Vis navnet på leverandørene som har minst en rød del på lager.
- Vis leverandørnummer med status lavere enn den høyeste status i tabellen leverandør.
- Vis navnet på leverandørene som ikke har delen P2 (det motsatte av oppgave 9).
- Vis navnet på leverandører som har absolutt alle deler på lager (vanskelig).
Løsningsforslag
Her er ytterligere oppgaver som involverer 4 tabeller (supplier, part, job
og spj).
Tilbake
