Avatar billede stephanryer Nybegynder
21. januar 2006 - 14:49 Der er 1 løsning

problem angående MAX, subquery og GROUP BY igen. stadig problem.

X Min mysql database er version 4.x

Jeg har en tabel kaldet highscore som ser sådan ud:

highscoreid  navn    score    ip

Jeg vil hente den største score der er lavet med en bestemt ip men derudover vil jeg også have det navn der står i det specifikke record hvor den største score er.

Til at finde ip og største score benytter jeg:

SELECT ip, MAX(score) as best FROM highscore GROUP BY ip ORDER BY best

Dette virker optimalt. Men jeg kan ikke bare tilføje navn således:

SELECT ip, MAX(score) as best, navn FROM highscore GROUP BY ip ORDER BY best

...for så får jeg et tilsyneladende tilfældigt navn der blot er i en tilfældig record med den specifikke ip og ikke det navn der vare ud for den højeste score.

Hvordan får jeg navnet med for den højeste score med et bestemt ip i én sql sætning? Der må gerne benyttes subqueries.

buzzzz skrev i min anden thread løsningen:

SELECT navn, ip, MAX(score) as best FROM highscore GROUP BY ip, navn ORDER BY best

men hvis der fx er følgende record i tabellen:

id  navn  score  ip
1  n1    44      1
2  n2    32      1
3  n2    11      2
4  n3    34      3

Vil man stadig både kunne se record 1 og 2 selvom de har samme ip fordi de har forskellige navne. Jeg vil KUN have den record der har den største score og så vil jeg have tilhørende navn.

På forhånd tak.
Avatar billede stephanryer Nybegynder
21. januar 2006 - 15:10 #1
har selv løst det:

SELECT ip, navn, MAX(score) as best FROM (SELECT MAX(score) as score, ip, navn FROM highscore GROUP BY ip, navn ORDER BY score DESC) as best
GROUP BY ip
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