Titre: Place d'un item dans une base mysql
Posté par: ng le le 26-01-2005 a 09:54:00
Salut à tous,
je cherche comment écrire une requête mysql qui me permettrait de trouver la position d'un enregistrement dans la base en fonction de son score.
2 champs dans chaque enregistrement, id et score, l'id est unique, le score varie de 0 à l'infini. Comment connaître la place de id=13 par exemple quand score est trié par ordre décroissant ?
Merci, et j'espère que c'est pas trop confus.
|
Titre: Re:Place d'un item dans une base mysql
Posté par: pixyle le le 29-01-2005 a 18:40:36
| Euh si c'est assez confu ^_^ Qu'est ce que tu appelles "place" "position" ? |
Titre: Re:Place d'un item dans une base mysql
Posté par: ng le le 29-01-2005 a 19:35:41
et bien si j'ai une liste de scores par exemple :
id score 1 109 2 156 3 156 4 29
comment savoir que l'id 1 est 2ème dans la liste ? (en une seule requête sql) |
Titre: Re:Place d'un item dans une base mysql
Posté par: pixyle le le 29-01-2005 a 20:22:15
... je suis loin de tout connaitre sur mysql mais je crois pas que ce soit possible directement avec une requete ... voit pas quelle tete ça pourrait avoir ...
En attendant reste l'astuce :
select * from matable limit 2,1 ;D |
Titre: Re:Place d'un item dans une base mysql
Posté par: pixyle le le 29-01-2005 a 20:27:02
| En relisant ta question je pense pas y avoir vraiment répondu. Sérieux je me creuse le crâne mais je vois rien d'autre que d'incrémenter une variable compteur ou de créer un champ genre numéro que tu incrémentes à chaque ajout ... |
Titre: Re:Place d'un item dans une base mysql
Posté par: tavman le le 30-01-2005 a 11:58:35
Un moyen pourrait etre de n'enregistrer que les 10 meilleurs scores seulement... Tu changerai ta table au fur et a mesure (en ne gardant que 10 entrées a chaque fois). Après, tu peut toujours faire un ORDER BY `score` lorsque tu va chercher tes résultats...
Ou sinon, tu peut toujours feinter : si jamais t'as 50 pages de résultats, t'as moyen de savoir quel est le score le plus mauvais et le meilleur de chaque page...
Donc pour afficher les 30 premiers, tu fait
SELECT * FROM `matable` ORDER BY `score` LIMIT 0 , 30
si le moins bon score de cette page là c'est 123, la requete pour afficher la page suivante ce sera
SELECT * FROM `matable` WHERE `score` < 123 LIMIT 0 , 30
et ainsi de suite.
( ca te donnera la même chose que : SELECT * FROM `matable` LIMIT 30 , 30 normalement, mais cette technique est plus simple).
Sinon, sans connaitre le score du gars, tu peut pas savoir quelle est son entrée dans la table (enfin je voit pas comment c'est possible)... |
Titre: Re:Place d'un item dans une base mysql
Posté par: ng le le 30-01-2005 a 12:14:43
| ok, merci à tous pour vos réponses, c'est très sympa ! :D |
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|