26. juli 2001 - 09:23Der 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.???
Manuelle og semi-automatiske strategier for identitetsstyring virker - lige indtil nogen beder om dokumentation. For at undgå denne fare har DKTV taget kontrol over sin identitets- og adgangsstrategi.
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)
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.
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?
<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>
Ingen kan tilsyneladende hjælpe, tager pointene selv.
Synes godt om
Ny brugerNybegynder
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.