Avatar billede kimkochrasmussen Nybegynder
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!
Avatar billede jakobdo Ekspert
15. oktober 2008 - 08:03 #1
Hvad hvis du gør: $query = mysql_query("SELECT * FROM sms WHERE kode = '$voteNr' GROUP BY sender");
Avatar billede kimkochrasmussen Nybegynder
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?
Avatar billede jakobdo Ekspert
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...
Avatar billede kimkochrasmussen Nybegynder
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...?
Avatar billede jakobdo Ekspert
15. oktober 2008 - 10:24 #5
Jeg tror du må prøve at vise lidt mere data fra din tabel.
Og vise hvordan du vil have data opstillet.
Avatar billede kimkochrasmussen Nybegynder
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...
Avatar billede jakobdo Ekspert
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.
Avatar billede kimkochrasmussen Nybegynder
15. august 2010 - 10:57 #8
gammel tråd - løsning fundet - lukker derfor
Avatar billede jakobdo Ekspert
15. august 2010 - 15:27 #9
Hvad blev din løsning ?
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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