Avatar billede dyhrberg Nybegynder
26. juli 2001 - 09:23 Der er 7 kommentarer og
1 løsning

SQL-sætning der tæller hvormange variabler der er adskilt med komma???

Jeg har en tabel hvor der kommer data i fra en online spørgeundersøgelse. Alle svar kommer ind i en database i et felt der hedder \"svar\". Hvis en respondent svarer to svar (multiple answers) på samme spørgsmål kommer værdierne ind i databasen i samme felt adskilt med komma. Hvordan kan jeg tælle hvormange svar der ialt er givet (ikke hvormange respondenter der har svaret - eks. hvis jeg har svaret \"blå\" og \"gul\" så er antal svar = 2, men som respondent tæller jeg kun én).

Hvordan tæller jeg antal svar op i en SQL-sætning - eller kan jeg få min database til at gøre det i en støttetabel feks.???
Avatar billede proaccess Nybegynder
26. juli 2001 - 09:30 #1
Enten må du lave din databasestruktur om, så hvert svar til et spørgsmål bliver lagret for sig, eller du må lave en funktion, som tæller antal kommaer og lægger 1 til.

Ved sidstnævnte metode vil \"Blå, Gul og Rød\" dog stadig fremtræde som 2 svar: \"Blå\" og \"Gul og Rød\"

Optimalt vil være følgende struktur for dine tabeller:
  Respondenter: data om personer
  Spørgsmål: Nummer og tekst på spørgsmål
  Svar: alle de svar, som er indkommet (1 ad gangen) (med fremmednøgler til de 2 øvrige tabeller)
Avatar billede erikjacobsen Ekspert
26. juli 2001 - 09:50 #2
Enig med proaccess. Man kan snyde lidt i MySql - ikke optimalt, men mest for sjov.

Lad brugerens valg svare til enkeltbits:

  Valg 1:  1
  Valg 2:  2
  Valg 3:  4
  Valg 4:  8
  Valg 5: 16

osv. Har han valgt nummer 1, 4 og 5, så gemmer du 1+8+16 i et talfelt. Derefter
kan du i en forespørgsel i MySql bruge BIT_COUNT funktionen til at tælle hvor mange
svar han har givet.
Avatar billede dyhrberg Nybegynder
26. juli 2001 - 23:22 #3
Kanon svar synes jeg, men hvordan laver jeg funktionen til dette - skal den laves i databasen eller via scripting i ASP-filen? Kan man ikke gøre det via et SQL-udtryk som jeg alligevel bruger til at hente data med?
Avatar billede erikjacobsen Ekspert
26. juli 2001 - 23:30 #4
...og bruger du så MySql? Det er ikke sikkert den funktion findes andre steder ?
Avatar billede dyhrberg Nybegynder
27. juli 2001 - 00:06 #5
Nej - denne database er en lille Access-database.

Her kan du se asp-koden jeg bruger:

<code>If \"\" <> Request.QueryString(\"id\") then
    If \"\" = Request.QueryString(\"mode\") then
      Sql = \"Select * from T_Vote where Id = \" & Request.QueryString(\"Id\")
      Set Record =  Rs.Execute(Sql)
      Dim Valg(5)
      valg(1) = Record(\"valg1\")
      valg(2) = Record(\"valg2\")
      valg(3) = Record(\"valg3\")
      valg(4) = Record(\"valg4\")
      valg(5) = Record(\"valg5\")

      response.write font & Record(\"Beskrivelse\")  & \"<br><br>\"

      Sql = \"Select count(*) as Found from T_VoteResult where VoteId = \" & Request.QueryString(\"Id\")
      Set Record =  Rs.Execute(Sql)
      Ialt = Record(\"found\")


      Response.Write \"<div align=\'left\'><table border=\'0\'><tr>\"
      For i = 1 to 5
        If valg(i) <> \"\" then
          Sql = \"Select Count(*) as Found from T_VoteResult where VoteId = \" & Request.QueryString(\"Id\") & \" and vote like \'%\" & Valg(i) & \"%\'\"
          Set Record = Rs.Execute(Sql)
          Procent = 100/Ialt * Record(\"Found\")
\' response.write Ialt

          response.write \"<td>\" & font & Valg(i) & \"</td><td>\" & font & Round(procent) & \"%</td><td><hr width=\'\" & Procent * faktor & \"\' size=\'10\' align=\'left\' color=\'\" & barcolor & \"\'></td></tr>\"
        end if
      Next
      Response.Write \"</table></div>\"
    end if</code>
Avatar billede erikjacobsen Ekspert
27. juli 2001 - 00:08 #6
Ok - Access - jeg giver op :(
Avatar billede proaccess Nybegynder
27. juli 2001 - 07:43 #7
Ok - ASP - jeg giver op :(
Avatar billede dyhrberg Nybegynder
27. august 2001 - 18:13 #8
Ingen kan tilsyneladende hjælpe, tager pointene selv.
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
Computerworld tilbyder specialiserede kurser i database-management

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