Gå til innhold

Anbefalte innlegg

Hei,

 

Jeg har litt problemer med å forstå en spørring hvor "not exists" blir brukt. Har 3 tabeller

 

Ansatt(anr (anr, navn, lønn, avd)
Avdeling(avdnr, a-navn, leder)
Prosjektplan(pnr, anr, timer)

 

spørsmålet er;

Finn navn på ansatte som skal delta på alle

prosjekter

 

 

SELECT A.navn
FROM Ansatt A
WHERE NOT EXISTS (
SELECT pnr
FROM Prosjektplan P1
WHERE NOT EXITS (
SELECT *
FROM Prosjektplan P2
WHERE P2.pnr = P1.pnr
AND P2.anr = A.anr) )

 

Jeg forstår dette slik:

først så får man ut alle ansatte, så tar man NOT EXISTS prosjektnummer ( får ut alle prosjektnummer ) også sammenlikner man alle prosjekter hvor to prosjektnummere er like :S og prosjektnummeret på det ene er lik ansatt nr på den andre. Men ved å bruke NOT EXISTS .. utelar vi ikke disse resultatene. Spørsmålet mitt er her, hva er det som blir eliminert i denne spørringen ...

 

takker .

Lenke til kommentar
Videoannonse
Annonse

Du kan begynne med å endre not exits spørringene til å ikke hente noe tabelldata, ettersom exists er sann hvis det blir returnert en rad, den bryr seg ikke om hva som blir returnert, og det er bare forvirrende.

 

SELECT A.navn

FROM Ansatt A

WHERE NOT EXISTS (

SELECT 1

FROM Prosjektplan P1

WHERE NOT EXITS (

SELECT 1

FROM Prosjektplan P2

WHERE P2.pnr = P1.pnr

AND P2.anr = A.anr) )

 

Spørringe blir da:

Hent ut ansatte

som ikke har prosjektplan

som ikke har prosjektplan knyttet til ansatt

 

Ville kanskje løst det slik selv:

SELECT A1.* FROM Ansatt A1

WHERE NOT EXISTS (SELECT 1 FROM Prosjektplan P LEFT JOIN Ansatt A2 ON P.anr = A2.anr AND A2.anr = A1.anr WHERE A2.anr IS NULL)

 

Hent ut ansatte

hvor det ikke finnes en prosjektplan som ikke er koblet mot ansatt

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...