Avatar billede Jhim Nybegynder
05. december 2012 - 16:37 Der er 6 kommentarer og
1 løsning

MySQL: Find find top 2 over mest brugte værdier

Hej Folkens.

Jeg knokler med at få SQL til at tage de to værdier som er mest brugt i en database.

tabelen (test) ser således ud:

| pid | uid |
_____________
|  1  |  1  |
|  2  |  1  |
|  3  |  1  |
|  4  |  1  |
|  4  |  1  |
|  4  |  1  |
|  1  |  2  |
|  2  |  2  |
|  3  |  2  |
|  4  |  2  |
|  1  |  3  |
|  2  |  3  |

Det jeg gerne vil have ud af databasen er pid = 1 og 2 fordi, det de værdi som flest brugere(uid) har valgt. Brugerne(uid) må kun tælle den samme pid op én gang, og det er det som giver mig problemer.

Jeg er kommet her til:

SELECT pid
FROM test
GROUP BY pid
ORDER BY count(*) DESC LIMIT 2

Det giver resultatet 4 og 1, fordi den ikke tager hensyn til at samme uid ikke må tælle med flere gange. Resultatet skulle gerne gå hen og blive 1 og 2.

Håber nogen forstår hvad mit problem er, da jeg synes det er ret svært at forklarer :-)

På forhånd tak for svarene.
Avatar billede arne_v Ekspert
05. december 2012 - 16:45 #1
virker

SELECT pid,COUNT(*)
FROM (SELECT DISTINCT pid,uid FROM tabel) x
ORDER BY COUNT(*)DESC LIMIT 2

?
Avatar billede Jhim Nybegynder
05. december 2012 - 16:51 #2
Det giver kun resultatet: 1
Avatar billede arne_v Ekspert
05. december 2012 - 17:37 #3
Du selecter 2 felter med en LIMIT 2 og du faar kun 1 vaerdi ud af det????
Avatar billede Jhim Nybegynder
05. december 2012 - 17:48 #4
tror at "(SELECT DISTINCT pid,uid FROM tabel)" gør at den kun selecter 1 værdi.
Avatar billede arne_v Ekspert
05. december 2012 - 18:00 #5
SELECT pid,COUNT(*)
FROM (SELECT DISTINCT pid,uid FROM tabel) x
GROUP BY pid
ORDER BY COUNT(*)DESC LIMIT 2
Avatar billede Jhim Nybegynder
05. december 2012 - 18:10 #6
Det virker arne_v!

Tusind tak for hjælpen :-)

Smid gerne et svar.
Avatar billede arne_v Ekspert
05. december 2012 - 18:41 #7
svar
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