j'ai une requete SQL qui me permet de determiner le classement du joueur en fonction des scores et de la date.
SELECT 1 + count(*) AS rank FROM players WHERE score < :score ORDER BY score ASC, date DESC
Admettons que le joueur a un score de 0.12, eh bien il sera avant le joueur qui a 0.5 et apres le joueur qui a 0.08 (par exemple).
Ma requete SQL ne me donne pas toujours le resultat souhaite. En effet, parfois elle me donne 5 alors qu'en realite le joueur est a la 4ieme position (et parfois elle me donne la bonne position).
Pouvez vous me dire ou est mon erreur ?
merci
- Edité par JonathanIdealump 16 janvier 2019 à 10:56:40
Le sujet est déplacé de la section PHP vers la section Base de données
Mauvais titre
Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.
Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).
De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.
Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.
Pour modifier votre titre, éditez le premier message de votre sujet.
(titre originel : Requete SQL)
- Edité par Lamecarlate 16 janvier 2019 à 10:34:44
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Cela me paraît bizarre de partir d'un score donné pour chercher le classement ... J'imagine plutôt partir de l'ID de joueur non ?
Pour les classements j'aime bien passer par une sous-requête (ou une vue du coup) qui calcule tout le classement :
SELECT @rang := @rang+1 , P.*
FROM players P, ( SELECT @rang := 0 ) T
ORDER BY score DESC
Ensuite tu peux chercher dans cette sous-requête (ou vue) :
SELECT R.player_rank
FROM
(
SELECT
@rang := @rang+1 AS player_rank,
P.*
FROM players P, ( SELECT @rang := 0 ) T
ORDER BY score ASC, date DESC
) R
WHERE R.ID = 'id souhaité'
En fait dans le jeu que je dois creer le classement se fait un peu differemment. C'est celui qui reussi a obtenir la valeur la plus faible qui gagne.
Edit: Je viens de tester et c'est exactement ca merci beaucoup. Je n'aurai JAMAIS pu trouver ca tout seul.
- Edité par JonathanIdealump 18 janvier 2019 à 7:49:09
Requete SQL (classement)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales