Avatar billede ravnkilde Nybegynder
08. marts 2006 - 10:27 Der er 14 kommentarer og
1 løsning

Tælle svar i en database - Select Count

Hej!

Jeg har en database med 9 felter: Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8 og Q9. I databasen skrives svarene fra et spørgeskema, der består af 1 spørgsmål med 3 prioterede svar. Dvs. hver deltager sætter tre krydser.

Svarene skrives som "Ja" i databasen og trækkes ud med nedenstående script, som viser at der er 0 svar i alt - på trods at min test-database allerede indeholder 13 svar x 3 = 39 svar/Ja.

Jeg har brug for en sammentælling af de afgivede svar for at kunne præsentere svarene procentvis.

Mit script tæller korrekt hvis jeg kun vælger f.eks. at tælle svarene i Q1, Q2 og Q3, men hvis jeg vælger flere Q'er, tæller den ikke korrekt.

Hjælp venligst!

--- start script ---

<%
' DSNLess forbindelse til databasen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("Database/2006.mdb")

Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

' Tælle alle svar i spørgsmål 1
strSQL = "SELECT COUNT(*) AS Antal FROM Games WHERE Q1 & Q2 & Q3 & Q4 & Q5 & Q6 & Q7 & Q8 & Q9 Like 'Ja'"
Set rs = myConn.Execute(strSQL)
Response.Write "Der er i alt " & rs("Antal") & " svar i spørgsmål 1"

' Luk forbindelse
myConn.Close
Set myConn = Nothing
%>

--- slut script ---
Avatar billede kalp Novice
08. marts 2006 - 10:34 #1
strSQL = "SELECT COUNT(*) AS Antal FROM Games WHERE Q1 & Q2 & Q3 & Q4 & Q5 & Q6 & Q7 & Q8 & Q9 = 'Ja'"
Avatar billede kalp Novice
08. marts 2006 - 10:36 #2
hvad hedder kolonnen med svaret i?

strSQL = "SELECT COUNT(kolonnenavn) AS Antal FROM Games WHERE kolonnenavn Like 'Ja'"

LIKE skal måske stadig erstattes med =
Avatar billede ravnkilde Nybegynder
08. marts 2006 - 10:37 #3
kalp: Har lige prøvet med =, men den siger fortsat 0 svar. Mine felter/kolonner hedder fra Q1 til Q9.
Avatar billede softspot Forsker
08. marts 2006 - 10:40 #4
Er det lovligt at benytte den notation!?

Jeg ville jo mene det skulle være sådan, hvis noget:

strSQL = "SELECT COUNT(*) AS Antal FROM Games WHERE Q1 like 'Ja' or Q2 like 'Ja' or Q3 like 'Ja' or Q4 like 'Ja' or Q5 like 'Ja' or Q6 like 'Ja' or Q7 like 'Ja' or Q8 like 'Ja' or Q9 like 'Ja'"
Avatar billede softspot Forsker
08. marts 2006 - 10:41 #5
...men det giver alligevel kun et resultat pr. række og du vil vel have talt 9 op hvis der er ja i dem allesammen... eller hvad?
Avatar billede ravnkilde Nybegynder
08. marts 2006 - 10:43 #6
softspot: Har prøvet din linie, men den siger "kun" 13 svar, hvilket passer for felterne Q1, Q2 og Q3. Men den tæller ikke de øvrige Q-felter med.
Avatar billede ravnkilde Nybegynder
08. marts 2006 - 10:45 #7
info: P.t. fordeler svarene "Ja" sig således på Q-felterne 1-9: 8, 3, 2, 3, 6, 4, 2, 4, 7 = i alt 39.

Jeg har checket min database og alle felter er ens sat op.
Avatar billede kalp Novice
08. marts 2006 - 10:45 #8
måske skal alle or rettes til and
Avatar billede ravnkilde Nybegynder
08. marts 2006 - 10:50 #9
kalp: ændrer intet!
Avatar billede softspot Forsker
08. marts 2006 - 10:51 #10
Det der sker er som sagt ikke at den tælle q1, q2 og q3, men at den tæller alle rækkerne med fordi der er mindst et svar som er ja i hver række. Din datastruktur besværliggør opgaven, idet du skal checke hver eneste svar for ja og lægge dette til en samlet sum for hver række som så til sidst skal summeres. Det er en opgave som vist er lettere at løse i en løkke frem for ren SQL og COUNT-funktionen...

sql = "SELECT * FROM Games"
set rs = conn.execute(sql)
antal = 0
do while not rs.eof
  for i = 1 to 9
    if rs("Q" & i) = "Ja" then
      antal = antal + 1
    end if
  next
  rs.movenext
loop
rs.close
Avatar billede ravnkilde Nybegynder
08. marts 2006 - 10:58 #11
softspot: Det ser godt ud - jeg kører lidt videre med dit forslag - foreløbig tak for hurtig udrykning ;-)
Avatar billede softspot Forsker
08. marts 2006 - 11:00 #12
No problem :)
Avatar billede ravnkilde Nybegynder
09. marts 2006 - 09:23 #13
softspot: smid et svar og få nogle fortjente points. Det virkede.
Avatar billede softspot Forsker
09. marts 2006 - 09:26 #14
Velbekomme :)
Avatar billede softspot Forsker
09. marts 2006 - 12:03 #15
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester