---
title: "Räkna antalet kommentarer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/148281-räkna-antalet-kommentarer"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "peppar"
published: "2006-06-21T08:42:33.000Z"
updated: "2006-06-21T11:48:20.000Z"
replies: 6
views: 357
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/148281-räkna-antalet-kommentarer"
---

# Räkna antalet kommentarer

## #1 — peppar, 2006-06-21T08:42Z

Skall summera antalet kommentarer och skriva ut det värdet till varje post som hämtas med getrows. Kan man göra det direkt i frågan? DB är access. Frågan ser ut såhär:

```
Set RecSet = Connect.Execute("SELECT dagbok.*, dagkommentarer.* FROM (dagbok LEFT OUTER JOIN dagkommentarer ON dagbok.dagId = dagkommentarer.komOrigin) ORDER BY dagbok.dagId DESC")
```

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

## #2 — cyprys, 2006-06-21T08:54Z

Edit: Glöm första svaret :)

```
"SELECT dagbok.*, (select count(*) from dagkommentarer ts where ts.komOrigin = dagbok.dagId) as antal_kommentarer
FROM dagbok
ORDER BY dagbok.dagId DESC"
```

Din sql-sats ser lite konstig ut. Du verkar hämta samtliga poster från dagbok **samt** en kommentar som tillhör denna dagbok. Rätt?

Annars är väl den enklaste lösningen att slänga in en sub-query liknande ovan.

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

## #3 — peppar, 2006-06-21T09:00Z

Där får jag: Syntaxfel i frågeuttrycket 'count(t2.\*)'.

red/ ok , du var för snabb... :)

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

## #4 — peppar, 2006-06-21T09:03Z

Ok! 

Det jag vill göra är att hämta alla poster från tabellen dagbok och hämta alla poster tillhörande varje post i dagbok från dagkommentarer. 

och räkna hur många kommentarer det finns till varje post i dagbok.

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

## #5 — cyprys, 2006-06-21T09:14Z

Ok. Jag utgår från att strukturen inte är identisk mellan ett dagboksinlägg och kommentar iom två tabeller. Det gör att endast en fråga för all information är utesluten.

Min lösning skulle nog vara med två frågor. 
Hämta dagboken:

```
"SELECT dagbok.*, (select count(*) from dagkommentarer ts where ts.komOrigin = dagbok.dagId) as antal_kommentarer
FROM dagbok ORDER BY dagbok.dagId DESC"
```

Hämta samtliga kommentarer:

```
select * from dagkommentarer order by komOrigin desc
```

Om du lägger in båda dessa i varsin array kan du för varje dagboksinlägg sedan stega 'antal_kommentarer'-steg i kommentarsarrayen för att skriva ut relevanta kommentarer.  Det här kräver dock att samtliga kommentarer är aktiva/valida (matchas mot något dagboksinlägg som inte är satt osynligt eller likn). De ska däremot vara sorterade korrekt. Med extra kontroller att kommentaren verkligen är för aktuellt dagboksinlägg kan det fixas.

Psuedokod

```
arrGb = rs1.getrows() ' inlägg
arrCom = rs2.getrows() ' kommentarer
i = 0

for each line in arrGb
  print gbContent
  for c = i to i + antal_kommentarer
    print arrCom[c]
  i = i + antal kommentarer
```

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

## #6 — peppar, 2006-06-21T10:08Z

Har anpasssat din kod en aning men vet inte om det är korrekt utfört av mig. Den stegar inte vidare på varje dagbokspost och den stegar ej heller vidare vid ny dagdokspost.
Jag är osäker på hur jag skall översätta denna rad:

```
print arrCom[c]
```

 

```
response.write arrRecSet1(c,0)
```

 

??

Språket är ASP.

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

## #7 — cyprys, 2006-06-21T11:48Z

Det är vanliga 2-dimensionella arrayer som getrows() returnerar. Nedan har du lite mer asp-kod som skall fungera. Du måste dock själv veta vilka fält som du returnerar för att veta vilket index de får i arrayen. 

```
set rs = conn.execute("SELECT dagbok.*, (select count(*) from dagkommentarer ts where ts.komOrigin = dagbok.dagId) as antal_kommentarer
FROM dagbok ORDER BY dagbok.dagId DESC")
if not rs.eof then
arrGbok = rs.getrows()
end if

set rs = conn.execute(select * from dagkommentarer order by komOrigin desc)
if not rs.eof then
arrCom = rs.getrows()
end if

curComment = 0
for i = lbound(arrGbok, 2) to ubound(arrGbok, 2)
	comments = arrGbok(0, i) ' 0 måset vara indexet för kolumnen som returnerar antal kommentarer
	' Skriv ut inlägget här som exempel
	response.write arrGbon(1, i) ' ex namn
	response.write arrGbon(2, i) ' ex texten
	
	' Gå igenom samtliga kommentarer
	for c = curComment to curComment + comments - 1
		response.write arrCom(1, c) ' ex namn
		response.write arrCom(2, c) ' ex kommentaren
	next
	
	curComment = curComment + comments
next
```

Lite felhantering skulle inte skada btw. ;)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/148281-räkna-antalet-kommentarer
