Bonjour,
Je dois , pour un jeu en ligne, trouver le score du meilleur joueur, sachant que ce score est calculé en faisant le cumul des 10 meilleurs scores effectué par ce meme joueur
j ai cette requete :
le probleme est que le LIMIT 0,10 est appliqué en SUM , donc on a en fait le total des scores effectué par le joueur en tout (pas de limite a 10) , ce qui est faux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT users.id, users.last_name1, ( SELECT SUM( scores.score ) FROM scores WHERE scores.user_id = users.id ORDER BY scores.score DESC LIMIT 0 , 10 ) AS total, user_id FROM users INNER JOIN scores ON scores.user_id = users.id GROUP BY users.id ORDER BY total DESC LIMIT 0 , 1
j ai bien essayé de faire une sous requete, mais il bloque sur la clause WHERE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT users.id, users.last_name1, ( SELECT SUM( scores.score ) FROM (SELECT score FROM scores WHERE scores.user_id = users.id ORDER BY scores.score DESC LIMIT 0 , 10) AS z ) AS total, user_id FROM users INNER JOIN scores ON scores.user_id = users.id GROUP BY users.id ORDER BY total DESC LIMIT 0 , 1une idée de comment s en sortir sans passer par un précalcul des 10 meilleurs scores de chaque joueur ?#1054 - Unknown column 'users.id' in 'where clause'
Merci d'avance !
A noter que j arrive bien a avoir le total pour un user précis , comme ceci
mais des que je veux faire une requete globale pour tous les users je galere..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT SUM(score ) AS total FROM (SELECT score FROM scores WHERE user_id=284 ORDER BY score DESC LIMIT 0,10) as sub_score
Partager