golgataMedlem sedan maj 2000131 inlägg Lite fortsättning på förra tråden men med ny fråga.
Har följande kod för att lista alla amnen som finns inlagda för ett ett id.
<%
SQL = "Select Distinct amne FROM amne WHERE id = " & CInt(Request.QueryString("Id")) &" ORDER BY amne"
Set RecSet = Connect.execute(SQL)
%>
<% Do Until recset.EOF %>
<%= recset("amne")%>
<%
Recset.MoveNext
loop
recset.close
%>
Nu vill jag lägga in en SQL sats i loopen för att räkna ut totalsumman för ett ämne.
Sen loopa nästa ämne och räkna ut totalsumman för det ämnet osv.
Sen ska allt presenteras som
Ämna
Totalsumma
nästa ämne
totalsumma
osv
SQL satsen som jag vill ha in ser ut så här.
SQL = "select amne, niva, id, amnesid, sum(niva) as totaltniva1 from amne Where id = " & CInt(Request.QueryString("Id")) &" AND niva = 1 group by id, amnesid, niva"
Set Rs1 = Connect.Execute(SQL)
Det jag skulle vilja ha in är WHERE amne = recset("amne") efter id = " & CInt(Request.QueryString("Id")) &" AND niva = 1
men det vill inte fungera.
Hoppas att någon fattar vad jag är ute efter.
För att förtydliga det ytterliggare så lägger jag upp 2 bilder.
En hur databasen och en för hur resultatet ska visas.
databasvärden = http://www.sommarmat.se/databas.jpg
visa resultat = http://www.sommarmat.se/resultat.jpg
Jag hänger inte med riktigt...
SQL = "select amne, niva, id, amnesid, sum(niva) as totaltniva1 from amne Where id = " & CInt(Request.QueryString("Id")) &" AND niva = 1 group by id, amnesid, niva"
Är väl den du skall använda till ditt RecSet?
Och när du loopar ut det så ser det ut något liknande:
<%
dim sCurrentTopic
SQL = "select amne, niva, id, amnesid, sum(niva) as totaltniva1 from amne Where id = " & CInt(Request.QueryString("Id")) &" AND niva = 1 group by id, amnesid, niva"
Set RecSet = Connect.execute(SQL)
If Not RecSet.EOF Then
Do Until recset.EOF
If sCurrentTopic <> recset("amne") Then
Response.Write "<h1>" & RecSet("amne") & "</h1>"
End If
Response.Write RecSet("niva") & " - " & RecSet("totaltniva1") & "<br />"
sCurrentTopic = recset("amne")
RecSet.MoveNext
Loop
End If
recset.close
%>
Kan vara helt ute och cyckla här ...
golgataMedlem sedan maj 2000131 inlägg ser riktigt bra ut.
för att krångla till det lite så vill jag även att det ska räknas ihop hur många nivå 1 det finns för varje ämne.
likadant hur många nivå 2 det finns för varje ämne
och nivå 3 likadant
detta ska skrivas ut ungefär så här.
Response.Write RecSet("niva") & " - " & RecSet("totaltniva1") & " = antal " & RecSet("AntalPerNiva") & " <br /> "
Osäker här men:
Count(amne) as AntalPerNiva
tror inte det fungera, och det heter inte Count i mySQL heller :/
golgataMedlem sedan maj 2000131 inlägg Kanon.
Hade lagt det som AND Count(amne) as AntalPerNiva. det skulle vara ,Count(amne) as AntalPerNiva
golgataMedlem sedan maj 2000131 inlägg Använder koden nedan
I kolumnen poäng så finns värdena 0 till 3. Om jag vill räkna ut totalsumman för alla där det är 1. och totalsumman för 2 och totalsummar för 3.
enkelt översatt men den koden fungerar inte.
alt. att räkna hur många fält som finns med en 1:a och sen gånga med 1, antal fält med 2:a och gånga med 2 och antal fält med 3 och gånga med 3.
se fet stil
SQL = "select amne, niva, id, amnesid, idniva, sum(poang) as totaltvarde, sum(poang) where poang = 1 as totaltvarde1, sum(poang) where poang = 2 as totaltvarde2, sum(poang) where poang = 3 as totaltvarde3 Count(amne) as AntalPerNiva from "amne Whereid = " & CInt(Request.QueryString("Id")) &" group by id, amnesid, niva"
Set RecSet = Connect.execute(SQL)
<%
dim sCurrentTopic, maxniva
SQL = "select amne, niva, id, amnesid, idniva, sum(poang) as totaltvarde, Count(amne) as AntalPerNiva from "amne Whereid = " & CInt(Request.QueryString("Id")) &" group by id, amnesid, niva"
Set RecSet = Connect.execute(SQL)
If Not RecSet.EOF Then
Do Until recset.EOF
If sCurrentTopic <> recset("amne") Then
Response.Write "<p class='titel'>" & RecSet("amne") & "</p>"
End If
maxniva = (CInt(recset("antalperniva")) * 3)
snitt = (Cint(recset("totaltvarde")) / maxniva)
linje = (snitt * 450)
Response.Write "<table cellspacing='0' cellpadding='0'><tr><td width'100'>Nivå " & RecSet("niva") & "</td><td style='border: 1px solid #000000; padding: 1px' width='450'><img border='0' height='15' src='../bilder/mallinje.gif' width="& linje &"></td></tr></table> <br />"
sCurrentTopic = recset("amne")
RecSet.MoveNext
Loop
End If
recset.close
%>
Använd istället ASP... annars kommer du få samma resultat och generera mer fält i ditt recordset än vad du behöver.
lägg till fältet poang ska hämtas ut i din SQL (helt vanligt)
Do until Recset.EOF
...
..
SELECT CASE RecSet("poang")
Case 0
lSum0 = lSum0 + RecSet("poang")
Case 1
lSum1 = lSum1 + RecSet("poang")
Case 2
lSum2 = lSum2 + RecSet("poang")
Case 3
lSum3 = lSum3 + RecSet("poang")
End Select
Och efter Loop så kan du skriva ut lSumX för att få reda på summan
golgataMedlem sedan maj 2000131 inlägg de fungerade inte som jag tänkt mig.
säg att för ämnesid 1 och nivå 1 så finns det 5 st fält som har värdet 1 i poängfältet då för det ämnet ska det visas 5
ämnesid 1 och nivå 1 så finns det 3 st fält som har värdet 2 i poängfältet då för det ämnet ska det visas 3
ämnesid 1 och nivå 2 så finns det 4 st fält som har värdet 1 i poängfältet då för det ämnet ska det visas 4
osv
emissionMedlem sedan dec. 19996 721 inlägg I princip är det mycket enkelt och effektivt att ta ut denna data direkt i SQL-frågan. Huruvida det funkar för dig återstår att se.
SQL = "select amne, niva, id, amnesid, idniva, sum(poang) as totaltvarde, sum(case when poang = 1 then poang else null end) as totaltvarde1, sum(case when poang = 2 then poang else null end) as totaltvarde2, sum(case when poang = 3 then poang else null end) as totaltvarde3 Count(amne) as AntalPerNiva from amne Where id = " & CInt(Request.QueryString("Id")) &" group by amne, niva, id, amnesid, idniva"
golgataMedlem sedan maj 2000131 inlägg emission ditt förslag fungerar men problemet är då att när allt skrivs ut så visas det en ny rad om ett ämne och en nivå innehåller flera olika poäng
raden nedan skriv ut 1 gång/värde
[code]
Response.Write "<table cellspacing='0' cellpadding='0'><tr><td width'100'>Nivå " & RecSet("niva") & "</td><td style='border: 1px solid #000000; padding: 1px' width='450'><img border='0' height='15' src='../bilder/mallinje.gif' width="& linje &"></td></tr></table> <br />"
[/code9]
golgataMedlem sedan maj 2000131 inlägg hittade felet. hade lagt till en text till i group by.