---
title: "For each..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/22230-for-each"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Jörgen HP"
published: "2001-10-06T23:17:00.000Z"
updated: "2001-10-07T08:46:00.000Z"
replies: 7
views: 217
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/22230-for-each"
---

# For each...

## #1 — Jörgen HP, 2001-10-06T23:17Z

Hej!

Oj, det blev ju flera frågor ikväll. Jag ska försöka förklara mitt beskymmer.

Jag har lite adminfunktioner till mitt forum. När jag har raderat, flyttat så vill jag räkna om hur många trådar det finns i varje forumavdelning.

Jag har 3 tabeller:

Categorier:
Innehåller samtliga forumavdelningar

Inlagg:
Innehåller alla orginalmeddelande

Svar:
Innehåller alla svar

Nu vill jag loopa igenom tabellen Categorier och för varje categoriId räkna antal inlägg i tabellen Inlagg som har just det categoriId. Samt uppdatera med rätt antal Inlagg i tabellen Categorier.

jag satt och pulade men fick inte rätt på det:

```
strSQL = "SELECT IntForumId FROM Categorier ORDER BY IntForumId"
arrPoster = objConn.Execute(strSQL).GetRows()

For each IntForumId In arrPoster

IntForumId = arrPoster(0)

sql ="SELECT COUNT DISTINCT(IntForumId) AS Antal FROM Inlagg WHERE IntForumId = "&IntForumId&""
SET RS = objConn.Execute(sql)

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") &" WHERE IntForumId = "&IntForumId&""
objConn.Execute sql,,128

Next
```

Tacksam för vägledning :)

Mvh Jörgen

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

## #2 — Pace, 2001-10-06T23:28Z

```
strSQL = "SELECT IntForumId FROM Categoreier ORDER BY IntForumId"
arrPoster = objConn.Execute(strSQL).GetRows()

[b]For IntForumId = 0 To UBound(arrPoster, 2)[/b]

IntForumId = [b]arrPoster(0, intForumID)[/b]

sql ="SELECT COUNT DISTINCT(IntForumId) AS Antal FROM Inlagg WHERE IntForumId = "&IntForumId&""
SET RS = objConn.Execute(sql)

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") WHERE IntForumId = "&IntForumId&""
objConn.Execute sql,,128

Next
```

SQL satsen SELECT COUNT DIST... är jag inte riktigt säker på... vi får vänta på LarsG! ;)

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

## #3 — jorgen, 2001-10-07T08:22Z

Hej!

Har kommit så här långt, den räknar och ger ut en siffra bara:

```

strSQL = "SELECT IntForumId FROM Categorier ORDER BY IntForumId"
arrPoster = objConn.Execute(strSQL).GetRows()

For IntForumId = 0 To UBound(arrPoster, 2)

IntForumId = arrPoster(0, intForumID)

sql ="SELECT COUNT(*) AS Antal FROM Inlagg WHERE IntForumId = "&IntForumId&""
SET RS = objConn.Execute(sql)

Response.Write "Antal "& RS("Antal") &" "

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") &" WHERE IntForumId = "&IntForumId&""
objConn.Execute sql,,128

Next
```

Skriver ut:

Antal 2 

Tips någon?

mvh Jörgen :)

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

## #4 — @nders, 2001-10-07T08:27Z

Vad är det som inte fungerar nu alltså?

Mvh,

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

## #5 — jorgen, 2001-10-07T08:30Z

Hej!

Den borde skriva ut:

Antal 2
Antal 3

Sedan sker det ingen update alls, men jag får inget felmess heller.

mvh Jörgen :)

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

## #6 — @nders, 2001-10-07T08:39Z

Ah!

Du använder variabeln intForumID lite galet, dels som kontrollvariabel i din loop, men också som något helt annat.

```
For [b]IntForumId[/b] = 0 To UBound(arrPoster, 2)

[b]IntForumId[/b] = arrPoster(0, intForumID)
```

Byt namn på den ena är mitt förslag. :)

Mvh,

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

## #7 — jorgen, 2001-10-07T08:39Z

Hej!

Nu ser den ut enligt följande. Då räknar den båda, men uppdaterar bara första forumet.

```
<%

Set objDB = GetDBConn()

strSQL = "SELECT IntForumId FROM Categorier ORDER BY IntForumId"
arrPoster = objDB.Execute(strSQL).GetRows()

For I = 0 To UBound(arrPoster, 2)

I = arrPoster(0,I)

sql ="SELECT COUNT(*) AS Antal FROM Inlagg WHERE IntForumId = "&IntForumId&" OR Flyttat = "&IntForumId&""
SET RS = objDB.Execute(sql)

Response.Write "Antal "& RS("Antal") &" <br>"

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") &" WHERE IntForumId = "&IntForumId&""
objDB.Execute sql,,128

Next
%>
```

mvh Jörgen :)

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

## #8 — jorgen, 2001-10-07T08:46Z

Hej!

Den slutliga och fungerande versionen blev: (tack @nders och tack Pace!)

```
strSQL = "SELECT IntForumId FROM Categorier ORDER BY IntForumId"
arrPoster = objDB.Execute(strSQL).GetRows()

For I = 0 To UBound(arrPoster, 2)

Id = arrPoster(0,I)

sql ="SELECT COUNT(*) AS Antal FROM Inlagg WHERE IntForumId = "&Id&" OR Flyttat = "&Id&""
SET RS = objDB.Execute(sql)

Response.Write "Antal "& RS("Antal") &" <br>"

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") &" WHERE IntForumId = "&Id
objDB.Execute sql,,128

Next
```

Mvh Jörgen :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/22230-for-each
