11. november 2006 - 14:52Der 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.
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"
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?
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 "*".
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")%>
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.
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 "
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
Jep.. Du kan bare nøjes med at gøre det ved alle de felter, hvor der er dupletter i de 2 tabeller.
Synes godt om
Ny brugerNybegynder
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.