Avatar billede jakoba Nybegynder
30. december 2001 - 07:09 Der er 7 kommentarer og
1 løsning

Complementeret join? (SQL)

jeg har to tabeller \'alfa\' og \'beta\'

alfa.ID  alfa.data
    1        \'olsen\'
    2        \'jensen\'
    3        \'cykelpumpe\'

beta.pkey  beta.data
    1        \'ellevild\'
    3        \'bedrøvet\'

og nu vil jeg gerne udtrække de rækker i alfa for hvilke der IKKE findes  en beta.pkey == alfa.ID
mit resultat skal være rækken:
alfa.ID  alfa.data
    2        \'jensen\'

Jeg forestiller mig noget i retning af:

SELECT alfa.* FROM alfa EXCLUSIVE JOIN beta ON alfa.ID = beta.pkey;

Men det hedder det ihvertfald ikke :(

Hvordan gør jeg det?

mvh JakobA

Avatar billede proaccess Nybegynder
30. december 2001 - 08:16 #1
Kan du ikke bruge denne:

SELECT Alfa.* FROM Alfa LEFT JOIN Beta ON Alfa.ID=Beta.pkey WHERE Beta.pkey IS NULL;
Avatar billede nih Novice
30. december 2001 - 09:37 #2
SELECT Alfa.id, Alfa.data
FROM  Alfa
WHERE Alfa.id NOT IN
          (SELECT Beta.Id FROM Beta)

Den her virker også

Niels
Avatar billede nih Novice
30. december 2001 - 09:39 #3
SELECT Alfa.id, Alfa.data
FROM  Alfa
WHERE Alfa.id NOT IN
          (SELECT Beta.pkey FROM Beta)

Avatar billede proaccess Nybegynder
30. december 2001 - 09:45 #4
>nih: Ja - det virker, hvis DBMS understøtter Sub-Select\'s... (LÆS: Din SQL vil IKKE virke på fx MySQL)
Avatar billede nih Novice
30. december 2001 - 09:50 #5
Proaccess->
ehh det vidste jeg ikke.

Jeg har ledt efter en komando ala UNION, der reurnere det modsatte af fællesmængden(mængde1 - mængde2). Kender du sådan en smart komando ???

Niels
Avatar billede proaccess Nybegynder
30. december 2001 - 09:59 #6
Hvis du er ude efter noget i retning af dette...

Tabel1
ID Navn
1 ProAccess
2 NIH

Tabel2
ID Navn
1 ProAccess
3 JacobA

Skal resultere i
Query1
ID Navn
2 NIH
3 JacobA

(uden \" 1 ProAccess\", da denne er med i begge tabeller)

Må man vist ty til:

SELECT Tabel1.* FROM Tabel1 LEFT JOIN Tabel2 ON Tabel1.ID=Tabel2.ID WHERE Tabel2.ID IS NULL UNION SELECT Tabel2.* FROM Tabel2 LEFT JOIN Tabel1 ON Tabel2.ID=Tabel1.ID WHERE Tabel1.ID IS NULL
Avatar billede nih Novice
30. december 2001 - 10:08 #7
Takker og godt nytår
Avatar billede jakoba Nybegynder
30. december 2001 - 12:40 #8
Smukt. takker :-))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester