Avatar billede lauritsen Nybegynder
24. maj 2005 - 01:02 Der er 3 kommentarer og
1 løsning

UNION eller?

Jeg har to tabeller, sådan:

tabel1:
_id_, felt1, felt2

tabel2:
_id_, felt3

"id"-kollonnerne er begge primærnøgler for deres respektive tabeller, og "id" i tabel2 er samtidig en fremmednøgle til "id" i tabel1.

tabel1 indeholder mange tupler, og tabel2 indeholder knapt så mange. tabel2 indeholder kun tupler med id, der også findes i tabel1, men tabel1 kan sagtens indeholde tubler med id, der ikke er i tabel2.

Nu ønsker jeg at lave en samlet forespørgsel på de to tabeller, a la:

SELECT *
FROM tabel1, tabel2
WHERE tabel1.id = tabel2.id
AND ...

*Men* det returnerer som bekendt kun fællesmængden af de to tabeller. Det, jeg ønsker, er samtlige tupler i tabel1 med påhægtet fel3, hvor det pågældende id findes i tabel2. Altså foreningsmængden af de to tabeller. felt3 skal så bare være null eller den tomme streng, hvor der ikke er et passende id i tabel2.

Skal jeg da ud i noget UNION-forespørgsel -- altså to hele SELECT-forespørgsler, som sættes sammen med UNION? Findes der ikke en nemmere måde at gøre det på, a la forespørgslen herover? Konkrete forslag modtages :-)
Avatar billede barklund Nybegynder
24. maj 2005 - 01:17 #1
Der skal du bruge en LEFT JOIN eller en RIGHT JOIN - altså en JOIN, hvor du tager alt fra den ene side, og dem fra den anden side, der nu engang passer - og ellers NULL hvis der ikke er noget:

SELECT felt1, felt2, felt3, tabel1.id
FROM tabel1 LEFT JOIN tabel2 ON tabel1.id = tabel2.id

Mere skal der ikke til :)

--
Morten Barklund
Avatar billede lauritsen Nybegynder
24. maj 2005 - 01:33 #2
Smukt, tak! Enkelt og ligetil. Nu, du nævner LEFT JOIN og RIGHT JOIN, så ringer der faktisk en klokke fra databaseforelæsningerne, men den var åbenbart for langt væk :-)

Skriv et svar-indlæg, hvis du vil have pointsne.
Avatar billede barklund Nybegynder
24. maj 2005 - 09:43 #3
Helt fint :)
Avatar billede lauritsen Nybegynder
25. december 2005 - 15:15 #4
Ups, fik dig aldrig givet point'ene. Sorry :-)
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