Gå til innhold

Problemmer med join og view i SQL


Anbefalte innlegg

Hei. Har en oppgave hvor jeg må utføre noen SQL-spørringer. Har prøvd en hel del å finne ut av det men plages.

 

Oppgaven ser slik ut:

AVDELING ( avdnr, avdnavn, ledernr)

 

ANSATT ( ansnr, navn, stilling, avdnr)

 

EIENDOM ( enr, adresse, leie, ansnr)

 

MEGLERGRUPPE ( smegnr, megnr)

 

hvor primernøkkler er understreket og fremmednøkkler er i kursiv. de ulike lernr, avdnr osv. henviser til ansnr i ANSATT.

 

Spørsmålet er som følger:

 

 

Lag en SQL-spørring som finner alle avdelinger og navnet på lederen i avdelingen. La resultatet være sortert på avdelingsnavn, og la kolonnen som viser lederen ha som overskrift "LEDER".

 

Lag et view antall_i_avdeling (avdnr, avdnavn, antall) som viser hvor mange ansatte det er i hver avdeling.

 

Setter enorm pris på om noen som vet hvordan dette løses kunne ha vært så snill å dele litt kunnskaper med meg:)

Endret av Hola
Lenke til kommentar
Videoannonse
Annonse

Skoleoppgave?

 

Jeg hjelper deg gjerne, men jeg gjør deg en bjørnetjeneste hvis jeg bare gir deg svaret. Da lærer du ingenting.

 

For å gi deg et hint: Begge spørringene involverer en INNEr JOIN (evt. LEFT JOIN hvis en avdeling kan være uten ansatte eller leder).

I tillegg vil spørring nr 2 (viewet) involvere en COUNT og GROUP BY.

 

Se om du får gjort noe basert på denne informasjonen.

Lenke til kommentar

Kom fram til dette:

 

SELECT avdnr, avdnavn ’Avdelingsnavn’,

ansnr, stilling ’Leder’

FROM avdeling, ansatt

WHERE ansnr= Leder

AND avdnr = ansnr

ORDER by avdeling.avdnavn;

 

og

 

SELECT ansnr, navn, avdnavn

FROM ansatt, avdeling

WHERE ansatt.avdnr = avdeling.avdnr

UNION

SELECT ansnr, navn, avdnavn

FROM ansatt, avdeling

WHERE ansatt.avdnr = avdeling.avdnr;

 

 

Er jeg helt på bærtur eller?

Lenke til kommentar

Den første er nesten riktig. Du skulle ha med avdeligsinfo (sier ikke hvilke kolonner) og navn på leder. Kolonnen med ledernavnet skulle være LEDER. I din spørring har du ikke med leder. Jeg ville dessuten brukt INNER JOIN syntaxen for å koble sammen de to tabellene.

 

Den andre spørringen er ikke i nærheten engang ;) . Hvorfor har du en UNION og hvor er antallet? Husk hintet jeg ga deg med GROUP BY og COUNT.

Lenke til kommentar

Skal se litt på den første jeg :dontgetit: Disse setningene ble laget før jeg fikk svar hos deg skjønner du. Derfor jeg er på bærtur med den siste :!: Men skal snart levere inn, så får det gå som det går. Det er jo i tillegg en rekke andre oppgaver, men det har gått bra :thumbup:

Lenke til kommentar

Det var så nært at jeg skal gi deg svaret, siden fristen nærmer seg.

 

SELECT avdeling.avdnr, avdeling.avdnavn, count(ansatt.ansnr) as antall.

FROM avdeling

inner join ansatt on ansatt.avdnr=avdeling.avdnr

GROUP BY avdeling.avdnr, avdeling.avdnavn;

 

Og så må du huske at det skal opprettes et view.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...