webForumDet fria alternativet

räkna ihop tal beroende på olika fältvärden

ASP

20 svar · 1 170 visningar · startad av golgata

Medlem sedan maj 2000131 inlägg
Frågan#1

Jag behöver en matematisk funktion för att räkna ut följande.

Hämta allt som har samma Id.
Plocka ut alla som har samma ÄmnesId och samma NivåId
Allt det som plockas ut ska Värdet summeras för att på ihop en totalsumma.

ex. plockar ut Id 703 med ÄmnesId 1 och Nivå 3
så blir det rad 2 och 4 = 2+1 = Totalsumma 3

Varje totalsumma ska presenteras för varje Ämne. Hur gör man detta?

Det kommer att kunna vara massor med olika kombinationer.
Antal Ämnen c:a 20 st
Antal NivåId = 3 st.

Kolumn 1 = Id
Kolumn 2 = ÄmnesId
Kolumn 3 = NivåId
Kolumn 4 = Värde

703 2 1 3
703 1 3 2
703 1 2 3
703 1 3 1
702 1 3 3
704 1 3 3
704 1 2 3

Medlem sedan jan. 2002381 inlägg
#2

någonting såhär kanske?

select sum(värde) as totaltvärde from tabell group by id,ämnesid,nivåid
Medlem sedan juni 20019 519 inlägg
#3
SELECT Sum(Värde) as TotalSum FROM <tabellen> Where Id = 703 And ÄmnesId = 1 And NivåId = 3

Men om du vill loopa ut det så hade jag nog kollat på Group By i SQL forumet. Eller är det en ren ASP lösning du söker efter?

Medlem sedan maj 2000131 inlägg
#4

voigtann1 skrev:

SELECT Sum(Värde) as TotalSum FROM <tabellen> Where Id = 703 And ÄmnesId = 1 And NivåId = 3

Men om du vill loopa ut det så hade jag nog kollat på Group By i SQL forumet. Eller är det en ren ASP lösning du söker efter?

Jag vill loopa ut det så jag kollar där.

Medlem sedan juni 20019 519 inlägg
#5

Testa daniel_ra exempel...

select sum(värde) as totaltvärde[b], ämnesId, NivåId[/b] from tabell group by id,ämnesid,nivåid

om du vill få lite data "du känner till" ;)

Medlem sedan mars 20034 471 inlägg
#6

daniel_ra skrev:

någonting såhär kanske?

select sum(värde) as totaltvärde from tabell group by id,ämnesid,nivåid

Det där borde ge Syntaxfel... Ändra till:

select id, ämnesid, nivåid, sum(värde) as totaltvärde 
from tabell 
group by id, ämnesid, nivåid

Kolumnerna i group by måste ut i select-delen.

Medlem sedan maj 2000131 inlägg
#7

är trött efter en dags programmerande men jag får det inte att fungera.

 
SQL ="select id, amnesid, niva, sum(niva) as totaltvarde from tabell group by id, amnesid, niva"
Set Rs5 = Connect.Execute(SQL)
Medlem sedan jan. 2002381 inlägg
#8

tvärt om , kolumnerna i selectsatsen måste vara med i goup by satsen

Medlem sedan juni 20019 519 inlägg
#9

Får du något SQL fel? eller blir ditt Rs5 tomt? Vad "fungera inte"? Får du ASP fel? isåfall vad?

Medlem sedan maj 2000131 inlägg
#10

får följande flemeddelande när jag skriver ut det.
<%= rs5("totalvarde")%>

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

Medlem sedan jan. 2002381 inlägg
#11

jag antar att din tabell inte heter "tabell" utan någonting annat

Medlem sedan mars 20034 471 inlägg
#12

golgata skrev:

är trött efter en dags programmerande men jag får det inte att fungera.

 
SQL ="select id, amnesid, niva, sum(niva) as totaltvarde from tabell group by id, amnesid, niva"
Set Rs5 = Connect.Execute(SQL)

Var det inte ett värde du skulle summera? Alltså inte nivån? Det gör du nu...

Och om det är avsikten så funkar inte frågan. Eftersom du grupperar på bl.a. nivå kommer sum(nivå) att alltid vara lika med nivå. (Den har ju bara ett värde per nivå....)

Medlem sedan maj 2000131 inlägg
#13

Ja det heter något annat.
Så här ser hela min kod ut.
Öppnar databasen

<%SQL ="select id, amnesid, niva, sum(Varde) as totaltvarde from svar group by id, amnesid, niva"
Set Rs5 = Connect.Execute(SQL)
%>
<%= rs5("totalvarde")%>
Medlem sedan mars 20034 471 inlägg
#14

Har du stavat alla tabeller och kolumner rätt?

Medlem sedan maj 2000131 inlägg
#15

stod totaltvärde i SQL satsen och totalvärde i rs5

Nu räknar den ihop och skriver ut för varje kombination.
Men den skriver ut för samtliga Id som finns.
Nu vill jag visa bara för t.ex Id 703 om det värdet är i Request.Querystring("Id")

Vad ska jag då ändra?

Medlem sedan juni 20019 519 inlägg
#16
"select id, amnesid, niva, sum(Varde) as totaltvarde from svar group by id, amnesid, niva Where id = " & CInt(Request.QueryString("Id"))
Medlem sedan maj 2000131 inlägg
#17

då blir det följande fel

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-5.0.45-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Where id = 703' at line 1

Medlem sedan dec. 20025 483 inlägg
#18
"select id, amnesid, niva, sum(Varde) as totaltvarde from svar Where id = " & CInt(Request.QueryString("Id")) & " group by id, amnesid, niva"
Medlem sedan maj 2000131 inlägg
#19

tack

Medlem sedan mars 20034 471 inlägg
#20

Golgata - Markera det svar som löste problemet - inte ditt lilla "tack"!

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)