Avatar billede bhn.314 Nybegynder
09. oktober 2002 - 11:47 Der er 7 kommentarer og
1 løsning

JOIN af 3 tabeller

Jeg har et lidt underligt problem, som jeg ikke ved om kan lade sig gøre: Jeg har vil gerne ha' alle de id'er og navne fra Hovedtabellen som findes i bitabellen VIA EN QUERY. Eksempelvis:

SELECT id, navn
FROM Hovedtabel, bitabel1, bitabel2
WHERE hovedtabel.id = bitabel1.id OR hovedtabel.id = bitabel2.id

Hovedtabel        Bitabel1        Bitabel2
----------        ----------      ----------
id  Navn          id              id
--- ------        ---              ---
23  Jensen        23              78
45  Hansen        99
78  Pedersen

Resultatet af joinen skal være:

id  Navn
--- -------
23  Jensen
78  Pedersen


Kan det OVERHOVED lade sig gøre
Avatar billede hbhansen Nybegynder
09. oktober 2002 - 11:50 #1
SELECT Hovedtabel.id, Hovedtabel.Navn
FROM Hovedtabel, Bitabel1, Bitabel2
WHERE Hovedtabel.id = Bitabel1.id OR Hovedtabel.id = Bitabel2.id 

Det skulle virke !
Avatar billede flse Nybegynder
09. oktober 2002 - 12:04 #2
Prøv med:

SELECT id, navn
FROM Hovedtabel
WHERE EXISTS (SELECT * FROM bitabel1 WHERE bitabel1.id=hovedtabel.id)
OR EXISTS (SELECT * FROM bitabel2 WHERE bitabel2.id=hovedtabel.id)

(har ikke testet det, men løsningen ligger i enten EXISTS eller IN funktionen i MS SQL - begge benytter sig af subselects)
Avatar billede bhn.314 Nybegynder
09. oktober 2002 - 12:07 #3
Det virker ikke umiddelbart, da du ikke kan bruge subselect/in/exists i SQL Server.
Avatar billede ocp Nybegynder
09. oktober 2002 - 12:11 #4
Du kan da sagtens bruge subselects, in og exists i SQL Server. Det har jeg gjort 100-vis af gange.
Avatar billede flse Nybegynder
09. oktober 2002 - 12:15 #5
Subselects virker fint på MS SQL server, men IKKE på MySQL ...
Avatar billede ocp Nybegynder
09. oktober 2002 - 12:16 #6
Endnu en variant (den bruger godt nok UNION, så den er ikke så smuk, men det giver dig da en masse løsninger at prøve af):

select id, navn
from hovedtabel
where hovedtabel.id in
(
select id from Bitabel1
UNION
select id from Bitabel2
)
Avatar billede bhn.314 Nybegynder
09. oktober 2002 - 13:00 #7
Tak for hjælpen
Avatar billede albeck Nybegynder
09. oktober 2002 - 13:02 #8
Eller denne :
Select id,navn
from hovedtabel, bitabel1
where hovedtabel.id = bitabel1.id
UNION
Select id,navn
from hovedtabel, bitabel2
where hovedtabel.id = bitabel2.id
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