Avatar billede llSimsll Nybegynder
26. oktober 2009 - 16:49 Der er 5 kommentarer og
1 løsning

Vælge 1 af hver

Jeg har en tabel med en række for hver score, ser sådan ud:

CREATE TABLE `game_scores` (
  `id` int(3) NOT NULL auto_increment,
  `gname` varchar(50) NOT NULL,
  `game_id` int(5) NOT NULL,
  `user_id` int(5) NOT NULL,
  `user` varchar(50) NOT NULL,
  `score` int(20) NOT NULL,
  `start_tid` int(30) NOT NULL,
  `slut_tid` int(30) NOT NULL,
  PRIMARY KEY  (`id`)
);

Den skal kun fange 1 række med højeste score for hvert gname der er.

Der kan sagtens være 100 rækker med samme gname, men den skal KUN tage den med højeste score i pågældende gname. Der efter skal den tage næste gname og højeste score. osv. indtil der er 1 højeste score for hvert gname.

Håber i forstår den lidt indviklede forklaring.
26. oktober 2009 - 17:49 #1
Mener du:

SELECT gname, game_id, MAX( score )
FROM game_scores
GROUP BY gname

Jeg testede det ved at lave denne tabel:

1     game1     1     1     user1     25    
2     game1     2     1     user1     50    
3     game1     3     1     user1     33    
4     game1     4     1     user1     17    
5     game1     5     1     user1     10    
6     game2     1     1     user1     100    
7     game2     2     1     user1     90    
8     game2     3     1     user1     55    
9     game2     4     1     user1     112    
10     game2     5     1     user1     111    
11     game3     1     1     user1     1000    
12     game3     2     1     user1     1111    
13     game3     3     1     user1     993    
14     game3     4     1     user1     1210    
15     game3     5     1     user1     800    

og jeg fik foelgende resultat:

gname      game_id  MAX( score ) 
game1     1         50
game2     1         112
game3     1         1210
Avatar billede llSimsll Nybegynder
26. oktober 2009 - 18:31 #2
Ja præcis! Det er sådan det skal være :)
Avatar billede llSimsll Nybegynder
26. oktober 2009 - 18:35 #3
Ohh, glemte lige en ting..

Hvad nu hvis jeg vil have top10 over score per spil?
26. oktober 2009 - 18:57 #4
Hvad mener du praecist?  At du for hvert slags spil vil have ikke kun den hoejeste men de 10 hoejeste scores?  Det maa jeg lige taenke over.
Avatar billede llSimsll Nybegynder
27. oktober 2009 - 09:16 #5
Der er et problem med:

SELECT gname, game_id, MAX( score )
FROM game_scores
GROUP BY gname

Den vælger SAMME bruger til alle top scorer, dvs. at selvom bruger 2 har lavet scoren får bruger 1 æren.
Avatar billede llSimsll Nybegynder
27. oktober 2009 - 09:17 #6
#4 Præcis :)

Opretter ny tråd, så det ikke bliver blandet for meget.
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