15. oktober 2008 - 03:20
Der er
8 kommentarer og
1 løsning
Sortering og gruppering af data
Har brug for hjælp til at lave noget kode.
Jeg har en mysql db med felterne: id, sender, text, kode
Det er en form for afstemningssystem, hvor text er mere eller mindre fri - og (og sådan er det) folk har mulighed for at sende mere end et svar....
kode er spørgsmålskoden
nu vil jeg gerne havde talt op hvormange der har stemt hvad (text) til et bestemt spørgsmål (kode) - og har den samme person (sender) sendt mere end et svar skal det kun tælles en gang, og det er det svar med lavest id der skal tælle.
Hvordan dulen skriver jeg en sådan sætning?
Jeg bør vil starte med:
$query = mysql_query("SELECT * FROM sms WHERE kode = '$voteNr'");
men skal jeg så køre rækker igennem - eller hvad gør jeg?
Hvis nogle kan give en mere eller mindre fuld kodeeksempel på det vil jeg være taknemmelig!
15. oktober 2008 - 09:46
#2
Smart... Men hvordan udvælger jeg så kun den første stemme?
OG hvordan får jeg listet de forskellige ting folk kan havde skrevet i text op, samt talt op hvor mange der siger det samme?
15. oktober 2008 - 10:05
#3
Hvis du skal have lavet så mange optællinger, så tror jeg næsten du må lave flere udtræk.
Men får at få den første stemme, kan du kigge på MIN(), som bruges ala:
SELECT MIN(id) FROM sms osv...
15. oktober 2008 - 10:11
#4
Tak, jeg tror godt jeg forstår hvad du skriver, men jeg kan ikke helt selv regne ud hvordan jeg kombinerer det - er der en der har tid til at vise lidt mere kode...?
15. oktober 2008 - 10:37
#6
id,sender,text,kode
1,10,a,1
2,11,a,1
3,10,b,1
4,11,b,2
5,12,Ja måske,2
6,12,b,2
7,12,b,1
8,10,a,2
9,13,a,2
Så vil jer gerne have
Spørgsmål (kode) 1:
Svar, antal
a, 2 (altså svarerne fra 10 og 11)
b, 1 (svaret fra 12, nummer 2 svar fra 10 skal sorteres fra)
Spørgsmål (kode) 2:
svar, antal
a, 2
b, 1
Ja måske, 1
Håber der er klart nok...
15. oktober 2008 - 11:49
#7
Jeg ville nok lave det sådan her:
SELECT `text`,count(`id`) FROM `tbl_849055` WHERE `kode` = 1 GROUP BY `text`
SELECT `text`,count(`id`) FROM `tbl_849055` WHERE `kode` = 2 GROUP BY `text`
Og så indbygge en kode, som sikrer man kun kan lave et svar på kode / spørgsmål.
Det kan laves på flere måder.
Man kunne f.eks. fjerne feltet ID og så lave en sammensat nøgle af kode og sender.
Det vil sikrer et svar pr bruger pr kode / spørgsmål.
Alternativt kan du kigge på at bruge REPLACE(), som vil erstatte en række, hvis altså den findes, og ellers indsætte en ny række.