---
title: "Räkna svar på inlägg i forum"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/130285-räkna-svar-på-inlägg-i-forum"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "bigsky"
published: "2005-06-19T21:53:12.000Z"
updated: "2005-06-21T20:13:30.000Z"
replies: 11
views: 448
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/130285-räkna-svar-på-inlägg-i-forum"
---

# Räkna svar på inlägg i forum

## #1 — bigsky, 2005-06-19T21:53Z

Håller på med ett MYCKET enkelt forum. Jag vill räkna hur många svar det finns på varje inlägg som loopas ut. Allt ligger i samma tabell. Jag tänkte koppla ihop dem med "Id" och "ParentId" men vet inte hur jag ska skriva i SQL-frågan.

All info ska loopas ut med samma fråga som kollar hur många svar varje inlägg har.

Om posten Id = "42" har ParentId = "20" är post 42 alltså ett svar till post 20.

Permalänk: https://www.webforum.nu/p/130285

## #2 — greyhound, 2005-06-19T23:18Z

Samma fråga som jag hade...

<http://www.webforum.nu/showthread.php?s=&threadid=127007&forumid=53>

Permalänk: https://www.webforum.nu/p/1632183

## #3 — m_soderlund, 2005-06-19T23:24Z

```
SELECT a.Id,(SELECT count(parentId) FROM tabell b WHERE b.parentId=a.Id) as replies FROM tabell a
```

Permalänk: https://www.webforum.nu/p/1632184

## #4 — bigsky, 2005-06-21T18:37Z

Alltid ska man krångla till det. Nu ser koden ut såhär:

```
Set rsShowTopics = ConnectToBoard.Execute("SELECT a.*, (SELECT Count(ParentId) FROM forum AS b WHERE b.ParentId = a.Id) AS strReplies FROM forum a WHERE a.ParentId = 0 ORDER BY a.PostedD, PostT")
If Not rsShowTopics.EOF Then arrRecSet = rsShowTopics.GetRows()
```

Men när jag vill skriva ut hur många svar det finns med strReplies skrivs IDet för posten ut istället.

Jag har använt arrRecSet(strReplies,i) för att försöka skriva ut antal svar.

Jag skulle även vilja göra så att den tråd som innehåller ett svar med det senaste datumet ska visas överst. Detta för att gamla trådar som fått ett nytt svar enkelt ska kunna besökas. Precis som det är här på wF. Hur ska jag sortera då i koden ovan?

Permalänk: https://www.webforum.nu/p/1632779

## #5 — @nders, 2005-06-21T18:39Z

Vad innehåller din asp-variabel strReplies?
Får du ut rätt värde om du skriver ut direkt från recordsetet istället, utan att ta omvägen via getrows()?

Permalänk: https://www.webforum.nu/p/1632780

## #6 — bigsky, 2005-06-21T18:46Z

strReplies ska innehålla antalet svar/poster där fältet ParentId har samma värde som en annan post i samma tabell (alltså själva inlägget).

Mer recordsetet blir det:

> fel '80020009' 
> Undantag inträffade

Permalänk: https://www.webforum.nu/p/1632784

## #7 — @nders, 2005-06-21T18:55Z

Jo, men asp-variabeln strReplies bör ju (iaf enligt din kod) innehålla ordningsnumret för fältet i SQL-frågan, eftersom du använder det i utskriften i getrows().

Kan du visa lite mer kod?

Permalänk: https://www.webforum.nu/p/1632792

## #8 — bigsky, 2005-06-21T19:08Z

Men jag vill att det ska vara antalet svar som finns på inlägget, därav Count i SQL-frågan.

```
For i = intFirstPost To intLastPost
If arrRecSet(strReplies,i) = 1 Then
  strAnswers = arrRecSet(strReplies,i) & " reply"
Else
  strAnswers = arrRecSet(strReplies,i) & " replies"
End If
If arrRecSet(strReplies,i) >= 10 Then
  strLinkColor = "#990000"
ElseIf arrRecSet(strReplies,i) >= 5 Then
  strLinkColor = "#FF9900"
ElseIf arrRecSet(strReplies,i) >= 2 Then
  strLinkColor = "#339900"
Else
  strLinkColor = "#000000"
 End If
	
counter = counter + 1
If counter Mod 2 = 0 Then
  color = "#EEEEEE"
Else
  color = "#FFFFFF"
End If
Next
```

Permalänk: https://www.webforum.nu/p/1632796

## #9 — @nders, 2005-06-21T19:19Z

Ja, men var sätter du variabeln strReplies som du använder här

```
If arrRecSet([b]strReplies[/b],i) = 1 Then
```

?

Där bör finnas en siffra, ordningsnumret på kolumnen du vill skriva ut. När du använder GetRows har ASP ingen aning om vad dina fält heter, det är en helt vanlig tvådimensionell array.

Alltså. Om det skapade fältet *strReplies* är nummer 5 i din selectlista, så är ordningsnumret 4 (då vi börjar på 0.) Då borde if-satsen se ut så här:

```
If Clng(arrRecSet(4, i)) = 1 Then
```

Permalänk: https://www.webforum.nu/p/1632805

## #10 — bigsky, 2005-06-21T19:37Z

Det är andra fältet i tabellen, alltså nummer 1

Permalänk: https://www.webforum.nu/p/1632822

## #11 — @nders, 2005-06-21T19:38Z

Dåså, ändra alla if-satser där du har *arrRecSet(strReplies,i)* till *arrRecSet(1,i)*.

Mvh

Permalänk: https://www.webforum.nu/p/1632823

## #12 — bigsky, 2005-06-21T20:13Z

Vänta nu, nu funkar det!

Permalänk: https://www.webforum.nu/p/1632857

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/130285-räkna-svar-på-inlägg-i-forum
