Hej! Det är smidigare att hämta all information i en och samma SQL-sats... Om du kan spara svar under ett annat svar måste du skriva en rekursiv loop:Räkna antal svar/post i forum?
Jag för söker räkna ut hur många svar det finns till varje tråd i mitt forum, men jag lyckas inte "få in" SQL-satsen i lopen. Som jag har det nu så skrivs det totala antalet svarsinlägg ut vid varje tråd, så jag antar att det måste till något mer where-villkor men frågan är vilket?
Tabellen ser ut så här:
threadID - answerID - rubrik osv...
(räknare) (tal) (text)
Huvudinlägg får ett threadID och answerID = 0.
Svarsinlägg får ett answerID som kommer från huvud inläggets threadID.
<code>
SQL = "SELECT * FROM forum WHERE answerID = 0 ORDER BY last DESC"
Set RecSet = Connect.Execute(SQL)
Do Until RecSet.EOF
'counting answers...
SQLstr = "SELECT count(*) AS ans FROM forum WHERE answerID <> 0"
Set RS = Connect.Execute(SQLstr)
'
'
'
Response.Write "<td class='inlagg' width=""80px"">"& RS("ans") &"</td>"
'
'
'
RecSet.MoveNext
Loop
RecSet.Close
</code>
Hoppas nån kan hjälpa mig att lösa detta.
Tack på förhand
//DeeSv: Räkna antal svar/post i forum?
SQL = "SELECT *, (SELECT count(*) FROM forum WHERE answerID = a.threadID) AS ans FROM forum AS a WHERE answerID = 0 ORDER BY last DESC"
/JohanSv: Räkna antal svar/post i forum?
<code>
Function CountAnswers(Connect, answerID)
Dim rs
Dim fldID
CountAnswers = 1
Set rs = Connect.Execute("SELECT ID FROM forum WHERE answerID = " & answerID)
Set fldID = rs("ID")
Do Until rs.EOF
CountAnswers = CountAnswers + CountAnswers(Connect, fldID.Value)
rs.MoveNext
Loop
End Function
SQL = "SELECT * FROM forum WHERE answerID = 0 ORDER BY last DESC"
Set RecSet = Connect.Execute(SQL)
Do Until RecSet.EOF
'counting answers...
Antal = CountAnswers(rs("ID").Value)
'
'
'
Response.Write "<td class='inlagg' width=""80px"">"& Antal &"</td>"
'
'
'
RecSet.MoveNext
Loop
RecSet.Close
</code>
Men jag rekomenderar att du för varje svar anger vilken dess root är. För då kan du summera med bara en SQL sats.