Avatar billede zantiago Nybegynder
19. marts 2005 - 18:31 Der er 5 kommentarer og
1 løsning

Join af tabeller

Hej Eksperter

Jeg kan (stadig) ikke finde ud af at bruge join i mine sql opkald.

Så jeg håber at I kan hjælpe!

Jeg har en MSSQL database med to tabeller:
[Modules]
- Id
- Module_Name
[Attached_Modules]
- Id
- Site_Id
- Module_Id

Tabellen [Modules] indeholder alle moduler, og tabellen [Attached_Modules] indeholder et Id på de moduler som er tilknyttet sitet.

Jeg skal lave to lister en liste med de moduler som brugeren har tilknyttet, og en liste med alle moduler, minus de moduler som er tilknyttet brugeren.

Håber I kan hjælpe

// Morten
Avatar billede eagleeye Praktikant
20. marts 2005 - 09:17 #1
Den første kan eksempelvis laves med inner join:

sql = "select Modules.* from Modules inner join Attached_Modules on Modules.id = Attached_Modules.module_id where Attached_Modules.side_id = " & brugerid


Den anden kan laves med en subselect:

sql = "select Modules.* from Modules where id not in (select module_id from Attached_Modules where Attached_Modules.side_id = " & brugerid & ")"
Avatar billede zantiago Nybegynder
20. marts 2005 - 11:53 #2
Hey - GOdt at have dig på banen :o)

Jeg kalder op med Conn, hvordan skriver jeg det? conn execute(sql) ???

Recordsettet er bare rs_modules - hvor / hvordan tilknyttes det til sql linjen?
Avatar billede eagleeye Praktikant
20. marts 2005 - 15:07 #3
Ja sådan her:

sql = "select Modules.* from Modules inner join Attached_Modules on Modules.id = Attached_Modules.module_id where Attached_Modules.side_id = " & brugerid

Set rs_modules = Conn.Execute(sql)
Avatar billede zantiago Nybegynder
20. marts 2005 - 16:51 #4
Jep - så var den der :o)

Kender du et sted hvor jeg kan læse mere om joins?

Smid et svar :o)
Avatar billede eagleeye Praktikant
20. marts 2005 - 17:07 #5
Ok her et svar. Ja man kan se lidt her:
http://www.w3schools.com/sql/sql_join.asp

Hvis man har to tabeller:
selec * from tabel1 XXX join tabel2 on ...

Så kan XXX være LEFT, RIGHT eller INNER. Det kan også være andre som OUTER alte efter hvilken database det er.

INNER:  selec * from tabel1 inner join tabel2 on ... 
Giver: Medtager kun rækker hvor joinforbundne felter fra begge tabeller er ens.

LEFT:  selec * from tabel1 left join tabel2 on ... 
Giver: Medtager alle poster fra tabel1 og kun de poster fra tabel2 hvor joinforbundne felter er ens.

RIGHT:  selec * from tabel1 right join tabel2 on ... 
Giver: Medtager alle poster fra tabel2 og kun de poster fra tabel1 hvor joinforbundne felter er ens.
Avatar billede zantiago Nybegynder
20. marts 2005 - 17:16 #6
Arhhh - Nu tror jeg måske jeg har forstået det lidt :o)
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
Kurser inden for grundlæggende programmering

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