Avatar billede websam Nybegynder
06. februar 2007 - 22:00 Der er 14 kommentarer og
1 løsning

join af 3 tabeller ?

Hejsa,

Jeg har følgende sql :

SELECT A.*
FROM tbl_Users AS A, tbl_UsersInRole AS B
Where (A.Id = B.UserId) And (B.RoleId = '1')

den vil jeg gerne have udvidet således at jeg kan trække Firstname og Lastname fra tabellen tbl_UsersPersonalInfo som indeholder et UserId.

Er der en der kan hjælpe mig med det ?

/Websam
Avatar billede kalp Novice
06. februar 2007 - 22:09 #1
SELECT A.*,tbl_UsersPersonalInfo.Firstname,tbl_UsersPersonalInfo.Lastname
FROM tbl_Users AS A, tbl_UsersInRole AS B, tbl_UsersPersonalInfo
Where (A.Id = B.UserId AND A.ID = tbl_UsersPersonalInfo.ID) And (B.RoleId = '1')
Avatar billede kalp Novice
06. februar 2007 - 22:09 #2
hvis altså jeg ramte rigtigt med kolonnenavne
Avatar billede kalp Novice
06. februar 2007 - 22:11 #3
SELECT A.*,tbl_UsersPersonalInfo.Firstname,tbl_UsersPersonalInfo.Lastname
FROM tbl_Users AS A, tbl_UsersInRole AS B, tbl_UsersPersonalInfo
Where (A.Id = B.UserId AND A.ID = tbl_UsersPersonalInfo.UserId) And (B.RoleId = '1')

sådan.. sorry. du skrev jo selv hvad id'et hed:) overså jeg
Avatar billede websam Nybegynder
06. februar 2007 - 22:16 #4
Den jeg har lavet giver 2 resultater når jeg køre den i query analyzer, den du forslår giver ikke nogen ?
Avatar billede kalp Novice
06. februar 2007 - 22:25 #5
sikkert fordi man skal ud i noget left/right join.. du kan forsøge med

SELECT A.*,tbl_UsersPersonalInfo.Firstname,tbl_UsersPersonalInfo.Lastname
FROM tbl_Users AS A, tbl_UsersInRole AS B, tbl_UsersPersonalInfo
INNER JOIN A
ON B.userID = A.id
AND
LEFT JOIN tbl_UsersPersonalInfo
ON A.id = tbl_UsersPersonalInfo.userID
And (B.RoleId = '1')
Avatar billede websam Nybegynder
06. februar 2007 - 22:29 #6
Lavede den lidt om så den ikke fylder så meget :

SELECT A.*,C.Firstname,C.Lastname
FROM tbl_Users AS A, tbl_UsersInRole AS B, tbl_UsersPersonalInfo AS C
INNER JOIN A
ON B.userID = A.id AND
LEFT JOIN C
ON A.id = C.userID
And (B.RoleId = '1')

Men det giver en fejl :

Server: Msg 1012, Level 15, State 1, Line 4
The correlation name 'B' has the same exposed name as table 'B'.
Avatar billede websam Nybegynder
06. februar 2007 - 22:29 #7
sry....

Server: Msg 1012, Level 15, State 1, Line 4
The correlation name 'A' has the same exposed name as table 'A'.
Avatar billede kalp Novice
06. februar 2007 - 22:37 #8
når du joiner tbl_UsersPersonalInfo.userID alene med A.Id så får du noget ikke?
Avatar billede arne_v Ekspert
07. februar 2007 - 01:33 #9
SELECT A.*,C.Firstname,C.Lastname
FROM (tbl_Users AS A INNER JOIN tbl_UsersInRole AS B ON B.userID = A.id)
    LEFT JOIN tbl_UsersPersonalInfo AS C ON A.id = C.userID
WHERE B.RoleId = '1'

ser syntaktisk rigtig ud, men om den er rigtig er en helt anden sag
Avatar billede websam Nybegynder
07. februar 2007 - 08:27 #10
Jeg tror det var for sent i går, mine test data i tabellen tbl_UsersPersonalInfo havde jeg fået slettet, så jeg prøver lige igen senere når jeg har fri fra arbejde og denne gang med data i tbl_UsersPersonalInfo tabellen ;o)

arne_v >> Det ser fornuftigt ud med dit forslag da den jo inner joiner de 2 første og kun tager fra den 3 hvis der er nogle data der matcher.

Men som sagt så prøver jeg igen senere
Avatar billede arne_v Ekspert
25. marts 2007 - 16:03 #11
websam ?
Avatar billede websam Nybegynder
26. marts 2007 - 07:23 #12
Smid et svar så kan i dele jeg har fået det til at virke ;o)
Avatar billede arne_v Ekspert
26. marts 2007 - 15:15 #13
ok
Avatar billede arne_v Ekspert
06. maj 2007 - 04:59 #14
kalp ?
Avatar billede websam Nybegynder
06. maj 2007 - 09:57 #15
Du får dem arne_v
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