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.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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.