webForumDet fria alternativet

Splitta och räkna?

ASP

4 svar · 353 visningar · startad av laidback

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

Har en tabell med en kolumn (svar8) vars innehåll kan se ut ungefär så här:

1 2 4 6

Jag vill hämta innehållet i hela tabellen där kolumnnamnet är svar8, splitta upp siffrorna i varje cell och sedan räkna hur många av varje siffra som finns TOTALT.

Alltså, hur många av alla celler som innehåller en etta t ex.

Så här tänker jag:

Hämta innehållet i första cellen
Deklarera fyra variabler, var1, var2, var3, var4 som int

Splitta upp innehållet i delar

Kolla om siffran 1 finns, plussa på var1 isf och spara värdet
Kolla om siffran 2 finns, plussa på var2 isf och spara värdet
Kolla om siffran 3 finns, plussa på var3 isf och spara värdet
Kolla om siffran 4 finns, plussa på var4 isf och spara värdet

Gå till nästa

Skriv ut innehållet i resp variabel

Några förslag på hur jag gör detta rent praktiskt?

Så här långt har jag kommit :r

  'hämta hela svaret
 sql = "SELECT svar8 FROM enkat"
 Databas.Execute(sql)
 set RecSet=Databas.Execute(sql)
 
 dim var1
 var1 = 0
 dim var2
 var2 = 0
 dim var3 
 var3 = 0
 dim var4
 var4 = 0
 
 'splitta innehållet för att få ut siffrorna
 str = RecSet("svar8")
  u = split(str, " ") 
                       
For i = 0 to ubound(u)

'räkna siffrorna?

if i Mod 1 = 0 then var1 = var1+1
if i Mod 2 = 0 then var2 = var2+1
if i Mod 3 = 0 then var3 = var3+1
if i Mod 4 = 0 then var4 = var4+1

next

Response.Write var1 & "<br>" & var2 & "<br>" & var3 & "<br>" & var4
RecSet.Close 
set RecSet = nothing

Needless to say, så funkar det inget vidare. Den räknar inte alls ihop allting. Hilfe?

(Okej, det här var kanske inte det smartaste upplägget, men nu är det så och till nästa gång kan jag hitta på något bättre... :x)

Medlem sedan juli 2003465 inlägg
#2
sql = "SELECT count(svar8) as s1 FROM enkat WHERE svar8 like '%1 %'"
set RecSet=Databas.Execute(sql)
var1 = RecSet("s1")
RecSet.Close

sql = "SELECT count(svar8) as s2 FROM enkat WHERE svar8 like '%2 %'"
set RecSet=Databas.Execute(sql)
var2 = RecSet("s2")
RecSet.Close

Response.Write var1 & "<br>" & var2

kanske?

Medlem sedan maj 2001797 inlägg
#3

Hrmm.. Tänk så lätt det kan vara när andra tänker åt en... :r

Ny approach, jag var helt fast i ett annat tankesätt! Tack för det! :bire

Medlem sedan juni 2004533 inlägg
#4

Tänk på att det enbart fungerar med ensiffriga värden.

Ifall du hade byggt databasen bättre så hade du haft värdena i en egen tabell så att varje värde låg i ett eget fält. Då hade det varit hur enkelt som helst att räkna alla värden i en enda databasfråga.

Medlem sedan juli 2003465 inlägg
#5

det funkar ju visst med flersiffriga värden men med lite förändring i sqlen eller tänker jag fel?

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