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

  1. Vis farge og by (uten duplikater) for deler som ikke er i Paris og veier mer enn 10 gram.
  2. Vis alle deler med vektene i kg.
  3. Vis kombinasjoner av leverandører og deler som finnes i samme by.
  4. Vis par av byer der en leverandør i den første byen har en del i den andre byen.
  5. Vis alle par av leverandørnummer som holder til i samme by.
  6. Vis antall leverandører som har delen P2 samt det minste og største antallet denne delen leveres i.
  7. Vis delenummer og det totale deler som alle leverandørene har.
  8. Vis delenummer for deler som har flere enn en leverandør.
  9. Vis navnet på leverandørene som har delen P2.
  10. Vis navnet på leverandørene som har minst en rød del på lager.
  11. Vis leverandørnummer med status lavere enn den høyeste status i tabellen leverandør.
  12. Vis navnet på leverandørene som ikke har delen P2 (det motsatte av oppgave 9).
  13. 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

Valid XHTML 1.0 Strict Valid CSS!