Avatar billede madeindk Nybegynder
11. november 2006 - 14:52 Der er 11 kommentarer og
2 løsninger

Problemer med JOIN SQL

Hej eksperter!

Jeg har følgende SQL:

Set RS = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * FROM commu_guestbook INNER JOIN users ON commu_guestbook.senderId = users.id WHERE commu_guestbook.userId=" & id & " ORDER BY commu_guestbook.ID DESC "

I min database der hedder 'commu_guestbook' har jeg et felt der hedder ID, men det har jeg også i tabellen 'users' og jeg skal bruge feltet der hedder ID i 'commu_guestbook' - hvordan gør jeg det? Når jeg skriver <%=rs("id")%> kommer brugerens id ud og ikke gæstebogs beskedens id.
Avatar billede the_ghost Nybegynder
11. november 2006 - 14:53 #1
Prøv at lav SQL sætningen om, så du kun henter det ud du har brug for.

Eks.: "SELECT commu_guestbook.ID FROM commu_guestbook INNER JOIN users ON commu_guestbook.senderId = users.id WHERE commu_guestbook.userId=" & id & " ORDER BY commu_guestbook.ID DESC"
Avatar billede madeindk Nybegynder
11. november 2006 - 14:57 #2
Jeg skal sådan set bruge alle felterne i commu_guestbook - og det der vil jo heller ikke løse mit problem? Jeg skal jo stadig bruge beskedens ID men det kan jeg ikke når den så erstatter det med 'senderId's bruger ID - forstår du?
Avatar billede the_ghost Nybegynder
11. november 2006 - 15:11 #3
Hvis du ikke skal bruge noget fra "users"-tabellen, kan du skrive:
"SELECT commu_guestbook.* FROM commu_guestbook INNER JOIN users ON commu_guestbook.senderId = users.id WHERE commu_guestbook.userId=" & id & " ORDER BY commu_guestbook.ID DESC "

Jeg kan ikke rigtigt se, hvorledes det ikke vil hjælpe dig at skrive hvad du skal bruge, istedet for at bruge "*". Hvis du skal bruge alle felterne i commu_guestbook, så skriv alle felterne (commu_guestbook.ID, commu_guestbook.Title, commu_guestbook.Messge osv osv.) Det performer også bedre end når du bruger "*".
Avatar billede madeindk Nybegynder
11. november 2006 - 15:14 #4
Efter jeg har sat din string ind kan jeg slette ikke requeste på min user tabel?
Avatar billede madeindk Nybegynder
11. november 2006 - 15:16 #5
Argh, havde misforstået hvad du havde skrevet først. Men jo, selvfølgelig skal jeg bruge noget fra users tabellen.
Avatar billede the_ghost Nybegynder
11. november 2006 - 15:25 #6
Prøv at tage din oprindelig select statement, og erstat * med det du skal bruge. Brug syntaksen tabel.kolonne (eks. commu_guestbook.ID, commu_guestbook.Title, commu_guestbook.Messge osv.)

Når du så requester et felt, så skal du bruge eks.: <%=rs("commu_guestbook.id")%>
Avatar billede madeindk Nybegynder
11. november 2006 - 15:32 #7
Nu ser min string sådan her ud:

SQL = "SELECT commu_guestbook.id, commu_guestbook.message, commu_guestbook.dateAndTime, commu_guestbook.mesRead FROM commu_guestbook INNER JOIN users ON commu_guestbook.senderId = users.id WHERE commu_guestbook.userId=" & id & " ORDER BY commu_guestbook.ID DESC "

Og så længere nede i koden skriver jeg: <%=rs("users.id")%> og så får jeg fejl omkring den ikke kan finde feltet.
Avatar billede the_ghost Nybegynder
11. november 2006 - 15:44 #8
Du har jo heller ikke skrevet nogle steder, at du vil hente "users.id"!

Du henter kun felterne: commu_guestbook.id, commu_guestbook.message, commu_guestbook.dateAndTime, commu_guestbook.mesRead

Hvis du vil have "users.id", skal du lige tilføje den.
Avatar billede madeindk Nybegynder
11. november 2006 - 15:47 #9
Hmm. Det skulle jeg så mene jeg gør nu, men stadig samme problem:

SQL = "SELECT commu_guestbook.id, commu_guestbook.message, commu_guestbook.dateAndTime, commu_guestbook.mesRead, users.id FROM commu_guestbook INNER JOIN users ON commu_guestbook.senderId = users.id WHERE commu_guestbook.userId=" & id & " ORDER BY commu_guestbook.ID DESC "
Avatar billede the_ghost Nybegynder
11. november 2006 - 16:22 #10
Prøv at give den et andet navn så.
commu_guestbook.id, commu_guestbook.message, commu_guestbook.dateAndTime, commu_guestbook.mesRead, users.id AS userID

og tilgå den <%=rs("userID")%>
Avatar billede madeindk Nybegynder
11. november 2006 - 16:25 #11
Det virker nu. Skal jeg så gøre det med alle de felter jeg hiver ud fra users tabellen?
Avatar billede madeindk Nybegynder
11. november 2006 - 16:37 #12
Dropper det. Tak for svarene - vi deles bare om pointene :-)
Avatar billede the_ghost Nybegynder
11. november 2006 - 16:40 #13
Jep.. Du kan bare nøjes med at gøre det ved alle de felter, hvor der er dupletter i de 2 tabeller.
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