webForumDet fria alternativet

Räkna i en tabell

ASP

13 svar · 189 visningar · startad av Rossifumi

Medlem sedan okt. 20001 558 inlägg
Frågan#1

Hur ser en SQL-sats ut som summerar ett fält i en accessdatabas?

Databasen har ett fält som heter topicCount. Och jag vill lägga ihop alla topicCount så att jag kan få det totala antalet inlägg.

Någon som fattar?

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan dec. 200012 464 inlägg
#2

   select sum(topicCount) as totalCount
     from ogrish

eller vad din tabell nu heter

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 20001 558 inlägg
#3

Tack :)

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan okt. 20001 558 inlägg
#4

Kanske är lite för avancerat...

Men jag gör som ni kanske förstår ett forum. Just nu finns det 7 st forum. Kan jag då göra en lite rutin eller något som räknar igenom det totala antalet inlägg i respektive forum?

Så här ungefär:

Forum1 22 inlägg
Forum2 122 inlägg
Forum3 222 inlägg

Eller måste jag göra ovanstående sum 7 ggr?

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan dec. 200012 464 inlägg
#5

   select count(*) as antal,
          forumnamn
   from forum
   group by forumnamn

Tillägg

du kan använda vilken aggregatfunktion som helst, dvs max,min,sum,count,avg

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 07 mar 2001]

Medlem sedan okt. 20001 558 inlägg
#6

Nu vet inte jag ifall jag inte fattar din kod eller ifall du missuppfattade mig. Jag vill alltså ha 7st olika värden. Det gör inte din kod eller?

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan dec. 200012 464 inlägg
#7

Jo, det blir ett värde för varje unikt forumnamn.

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 20001 558 inlägg
#8

OK, men trög som jag är så fattar jag inte så mycket.

Hur använder jag din kod?

Min tabell ser ut som följer:

topicID | räknare >> Säger sig självt
topicCounter | tal >> antalet svar på detta topic
forumID | tal >> Visar till vilket forum ämnet hör till

Hur skriver jag då för att få detta resultat:

Det fanns 10 inlägg i forumet med id = 1
Det fanns 12 inlägg i forumet med id = 2
osv...

Tack på förhand!

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan dec. 200012 464 inlägg
#9

  ' connect etc
  SQLstr = "select sum(topicCounter) as antal, forumID from topics group by forumID"
  set rs = connection.execute(SQLstr)

  while not rs.eof
     response.write "Det finns " & rs("antal") & " inlägg i forumet med id = " & rs("forumID")
     rs.movenext
  wend

Jag vet fortfarande inte vad din tabell heter :h .

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 20001 558 inlägg
#10

Jag får tacka för hjälpen, men jag är så trög :)

Kolla in denna textfilen så får du hela koden. Hoppas att det kan hjälpa dig.

Tack än en gång för hjälpen :)

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan dec. 200012 464 inlägg
#11

Ok, jag tittade på din kod.

Det du kan göra är att lägga till det här på samma ställe som du räknar ut totala antalet.


SQLstr = "select sum(topicCounter) as antal, forumID from topicTable group by forumID order by forumID"

set rs = connection.execute(SQLstr)

fmCnt = rs.getrows()

Arrayen fmCnt innehåller nu alla poster från recordsetet. För att komma åt antalet inlägg i forumet med ID 1 så skriver man


   fmCnt(0,0)

Har du inte funderat på att lägga ner forumbeskrivningarna i databasen och hämta upp dem i en loop? I så fall kan man använda den förra varianten som jag skrev.

Om du vill läsa mer om getrows så finns det här
http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/dasdk/mdam9rg3.htm

Red: Nu vet jag ju vad din tabell heter.
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 07 mar 2001]

[Redigerat av LarsG den 07 mar 2001]

Medlem sedan okt. 20001 558 inlägg
#12

Den klagar på rad 9 (fet)

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/forum/default.asp, line 9

<%

	Dim fmCnt, antal

	mySQL = "select sum(topicCounter) as antal, forumID from topicTable group by forumID order by forumID"
	[b]set objRS = objConn.Execute(mySQL)[/b]

	fmCnt = objRS.GetRows()

%>

Kanske är smidigare att loopa ut all info istället :) Men då kommer jag till ett annat problem.

Som du ser i min kod så måste jag isåfall loopa ut 3 forum sedan lägga in en bild sedan loopa ut 3 forum till och sedan en bild och sist men inte minst loopa ut 1 forum... Pheew, är det jätte jobbigt eller? Kanske bara går att använda mod eller något?

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan dec. 200012 464 inlägg
#13

Okej access klarar tydligen inte av att man använder namn i order by. Försök med denna select istället.

mySQL = "select sum(topicCounter) as antal, forumID from topicTable group by forumID order by 2"

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 08 mar 2001]

Medlem sedan okt. 20001 558 inlägg
#14

Samma felmeddelande, men tar jag bort ditt "group by forumID" så funkar det... Skumt.

Skall testa lite själv med att loopa ut allt istället, och då kan jag ju ha en vanlig sum inne i loopen :)

Tack så mycket för hjälpen :)

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)