Avatar billede websam Nybegynder
11. februar 2009 - 19:18 Der er 7 kommentarer og
1 løsning

Hjælp til sql sætning

Hejsa,

Jeg har 3 tabeller:

tbl_Users
(indeholder bruger data)

tbl_Roles
(indeholder brugergruppe data)

tbl_UsersInRoles
(binder de 2 ovenstående tabeller sammen med bruger id og gruppe id)

Jeg skal så lave et træk der finder en enkelt bruger og hvilen gruppe denne bruger er tilknyttet. Er der en der kan hjælpe mig med det ?
Avatar billede arne_v Ekspert
11. februar 2009 - 19:41 #1
noget a la:

SELECT roles.rolename
FROM users,usersinroles,roles
WHERE users.id=userinroles.userid AND userinroles.roleid=roles.id AND users.name='XXXX'
Avatar billede websam Nybegynder
11. februar 2009 - 19:50 #2
Jeg kan så se at jeg ikke fik skrevet alt det jeg ville i mit indlæg, sorry.

Det jeg var på udkig efter var at lære lidt om inner joins, så kan du give et eksempel med inner join ?

Jeg syntes at have læst et sted at der skulle være mere fart på når der bruges inner join, men jeg kan jo tage fejl.
Avatar billede arne_v Ekspert
11. februar 2009 - 19:59 #3
Jeg brugte den gamle syntax fra 1980'erne.

Hvis du foretaekker den nyere syntax saa:

SELECT roles.rolename
FROM (users INNER JOIN usersinroles ON users.id=userinroles.userid) INNER JOIN roles ON userinroles.roleid=roles.id
WHERE users.name='XXXX'
Avatar billede arne_v Ekspert
11. februar 2009 - 20:01 #4
Hvis database optimizeren er bare nogenlunde, saa vil de to blive udfoert ens.
Avatar billede websam Nybegynder
11. februar 2009 - 20:33 #5
Kan du se nogen fejl i denne :

Select tbl_Login.*, tbl_Roles.Id As RoleId
From (tbl_Login Inner Join tbl_LoginRoles On tbl_Login.Id = tbl_LoginRoles.LoginId) Inner Join tbl_Roles On  tbl_Login.Id = tbl_LoginRoles.RoleId
Where tbl_Login.Id = 1

Jeg har en record med id 1 i tbl_Login og den er kædet sammen brugergruppe 1 i tbl_LoginRoles, men den henter lige så mange rækker som jeg har brugergrupper ?
Avatar billede websam Nybegynder
11. februar 2009 - 20:35 #6
Den fandt jeg selv ud af :

tbl_Login.Id = tbl_LoginRoles.RoleId

Skal selvfølgelig være :

tbl_Roles.Id = tbl_LoginRoles.RoleId

Det virker nu så smid et svar ;o)
Avatar billede arne_v Ekspert
11. februar 2009 - 20:38 #7
svar
Avatar billede arne_v Ekspert
11. februar 2009 - 20:39 #8
Hvis du vil soege paa login id saa behoever du faktisk kun joine paa 2 tabeller, da lige netop det felt fra login er i loginroles tabellen !
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