10. november 2005 - 14:00Der er
2 kommentarer og 1 løsning
sortering af 2 parametre i sql forespørgsel
Hejsa, jeg har en tabel som har følgende kolonnenavne:
ID, traadnr, tekst, traadoprettetaf, traadoverskrift, beskedoprettetaf og dato.
Det er meningen, det skal være til et forum. ID er primærnøgle, og er autonummering. traadnr angiver hvilken tråd man skriver i. der vil altså være mange rækker i databasen med fx. traadnr 1, hvor det eneste der faktisk er forskelligt i dem er ID, dato og selve teksten.
Jeg skal lave en hovedside til forummet, hvor den sorterer og viser hvor mange tråde der er. pt. ser kode sådan ud:
Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then Response.Write "<table width=450 border=1 bordercolor=#000000 cellpadding=0 cellspacing=0 style=""border-collapse: collapse"">" response.write "<tr><td width=250><font face=verdana size=2><b>Overskrift</b></td><td><font face=verdana size=2><b>Oprettet af</b></td></tr>" Do While Not rs.EOF response.write "<tr><td width=250><font face=verdana size=2><font face=verdana size=2><a href=forumtraad.asp?traadnr="&rs("traadnr")&">" & rs("traadoverskrift") & "</a></td>" response.write "<td><font face=verdana size=2>Af " & rs("traadoprettetaf") & " d. " & rs("dato") & "</tr>" rs.MoveNext Loop Response.Write "</table></center>" Else Response.Write "<p><font face=verdana size=2>Der er endnu ikke nogle der har skrevet i gæstebogen</font></p>" End If
og jeg ved godt den ikke skal se sådan ud, da ovenstående viser hver eneste række i databasen, og derfor har alle såkaldte "underkommentarer" i et forumindlæg med.
Hvordan laver jeg min forespørgsel så den kun medtager den række for hver tråd, hvor ID'et er lavest? Her må jo forstås, at den første række hvor et nyt traadnr findes, må have det laveste ID, og dermed så må være "hovedindlægget" på en ny tråd.
ja nu har jeg fundet ud af det. Jeg omgås den mærkelige SQL-kodning ved at lave en løkke, hvor jeg kontrollerer om traadnr er det samme som før. Hvis det er, fortsætter jeg med næste linje, men hvis det ikke er, så fylder jeg ind i tabellen, med det info der står på den række, og så fremdeles. Så får jeg kun én række pr. traadnr, og da jeg sorterer med ID lavest og opad, så får jeg altid den første i rækken, dvs. hovedoplægget.
Koden:
strSQL = "SELECT * FROM forum ORDER BY ID ASC;" Set rs = Conn.Execute(strSQL)
Else Response.Write "<p><font face=verdana size=2>Der er endnu ikke nogle der har skrevet i forummet</font></p>" End if
jeg hapser selv pointene
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.