05. maj 2003 - 20:59Der er
20 kommentarer og 1 løsning
tælle kommentarer
jeg skal have lidt hjælp til et debatforum jeg er ved at lave.
Jeg har en oversigtsside som udskriver alle emner der er oprettet. jeg skal tælle hvor mange kommentarer der er oprettet til hvert enkelt emne, men jeg kan ikke lige gennemskue hvordan det skal gøres.
Der er to tabeller 1. traad 2. kommentar
Kommentarerne bliver knyttet til tråden ved hjælp af en kolonne der hedder traadid
Hvordan kan antallet af kommentarer til hver enkelt emne blive optalt?
...jeg ved ikke lige om det er helt klart formuleret, men ellers må i lige sige til
strSQL = "Select ID from Traad" set rs = dbconn.execute(strSQL)
do while not rs.EOF strSQL = "Select Count(ID) as kTotal from Traad where Traad_IDFK = " & rs("ID") set kRS = dbconn.execute(strSQL) Response.Write "Der er " & kTotal & " kommentarer i denne tråd!<br><br>" rs.MoveNext
strSQL = "Select ID from Traad" set rs = dbconn.execute(strSQL) do while not rs.EOF strSQL = "Select Count(ID) as kTotal from Traad where Traad_IDFK = " & rs("ID") set kRS = dbconn.execute(strSQL) Response.Write "Der er " & kTotal & " kommentarer i denne tråd!<br><br>" rs.MoveNext
Hvis du på samme tid lave en JOIN mellem de to tabller kan du få overskriven med fra Traad, her antager jeg du har en kolonne som hedder, OverSkift i traad:
SQL = "SELECT Count(kommentar.traadid) AS antal, traad.OverSkift FROM traad INNER JOIN kommentar ON traad.id = kommentar.id GROUP BY traad.OverSkift;"
Set rs = Conn.Execute(SQL) do while not rs.EOF Response.write "Tråd : " & rs("OverSkift") & " har " & rs("antal") & " kommentare. <br>" rs.Movenext loop
Hvis du laver det sådan her kan du nøjes med et database kald:
<% SQL = "SELECT Count(kommentar.traadid) AS antal, traad.dato, traad.traadID, traad.overskrift, traad.navn FROM traad INNER JOIN kommentar ON traad.traadid = kommentar.traadid GROUP BY traad.dato, traad.traadID, traad.overskrift, traad.navn ORDER BY traaid DESC"
Set Rs = Conn.Execute(sql) %> <% do until rs.EOF %> <tr> <td><%=rs("dato") %></td> <td><%=rs("traadID") %></td> <td><a href="kommentar.asp?id=<%=Rs("traadid")%>&debatid=<%=Request.Querystring("id")%>"><%=rs("overskrift") %></a></td> <td colspan="2"><%=rs("navn") %></td> <td><%=rs("antal")%></td> </tr> <% rs.movenext loop %> <% rs.close set rs = nothing %>
nå det var vist bare en stave fejl, nu får jeg flg fejl: The specified field 'traadid' could refer to more than one table listed in the FROM clause of your SQL statement.
SQL = "SELECT Count(kommentar.traadid) AS antal, traad.dato, traad.traadID, traad.overskrift, traad.navn FROM traad INNER JOIN kommentar ON traad.traadid = kommentar.traadid GROUP BY traad.dato, traad.traadID, traad.overskrift, traad.navn ORDER BY traad.traaid DESC"
arh nu er jeg løbet ind i et nyt problem inden man kan oprette en emne skal man vælge en kategori, ex. fri debat. i oversigten udskriver den så alle emner oprettet i denne kategori, men nu udskriver den alle emner der er oprettet....altså også emner der er oprettet i andre kategorier.... hvorfor??
Ups jeg har glemt at få din WHERE del med prøv med denne SQL:
SQL = "SELECT Count(kommentar.traadid) AS antal, traad.dato, traad.traadID, traad.overskrift, traad.navn FROM traad INNER JOIN kommentar ON traad.traadid = kommentar.traadid Where traad.typeID=" & Request.Querystring("id") & " GROUP BY traad.dato, traad.traadID, traad.overskrift, traad.navn ORDER BY traad.traaid DESC"
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.