15. oktober 2008 - 03:20Der 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!
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...
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...?
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.
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.