Requete : Position, order by

Répondre
manu56
le 12/12/2005 à 23:47
manu56
Bonjour,
Je voudrais faire une requete qui me retourne la position d'une valeur dans la requete (avec un ORDER BY mon_champs ASC)

j'espoir avoir été compréhensible !!!
LupusMic
le 13/12/2005 à 10:34
LupusMic
Euh... non :)

C'est quoi la position d'une valeur dans la requête ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
manu56
le 13/12/2005 à 12:10
manu56
erf
Je vais la refaire !!!
J'ai par exemple une requete qui retourne tous les utilisateurs d'une table avec un order by login

Je voudrais par exemple repéré a quelle "place" se situe le login "manu". Ca peut sa faire avec php en parcourant le fetch_array mais c'est pas optimisé (ca fait **** de retourner tous les utilisateur pour repéré la position de "manu")...

J'espère que c'est plus clair :$
i M@N
le 13/12/2005 à 12:36
i M@N
Hello !

Pk pas un champs id autoincrément.

Ta position sera l'id.

@+...
One Love, One Heart, One Unity.
zebden
le 13/12/2005 à 13:09
zebden
Sauf si des champs sont effacés.. Pour le coup la dernière id correspondra pas à la position.
J'avais essayé de chercher pour trouver la pos exacte d'un champ.. Je pense pas que cela soit possible (à verifier).

Dis nous l'utilité, tous les chemins mènent à Rome. On peut surement trouver une autre façon de faire.
zebdinou pour les intimes / Blog : http://www.zebden.fr
manu56
le 13/12/2005 à 18:52
manu56
L'id n'est pas une bonne solution nan ...

En faite j'ai une table user_classement qui contient l'id de mes membres et leurs points. Sur les fiches des utilisateurs, je souhaiterais indiquer leur position sur le total de membre. Pour optimiser le code, je préfère avoir juste une requete qui me retourne directement sa place :)

Merci :p
LupusMic
le 14/12/2005 à 04:28
LupusMic
Éventuellement une solution, mais je ne garantit pas la performance ;)

select @i:=0, i as pos
from (select @i:=@i+1 as i, name
from users) as u
where name='Kapax' ;


Testé sous MySQL 5. Si l'utilisateur n'existe pas, la variable @i n'est pas réinitialisée pour la prochaine requête.

Certainement un bogue de MySQL 5.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
manu56
le 14/12/2005 à 07:31
manu56
Salut, merci de ta réponse mais je suis sous MYSQL 4.0 et aparemment ca passe que sur une version supérieur :x
"Check the manual that corresponds to your MySQL server version for the right syntax"
LupusMic
le 15/12/2005 à 06:38
LupusMic
MySQL 4 ou 4.0 ou 4.1 ? Ça doit venir de la requête imbriquée, c'est venu tard dans MySQL.

De plus, quand tu cite une erreur MySQL, donne là en entier. Parce que le texte d'erreur ici ne fait qu'indiquer qu'il y a une erreur de syntaxe.

Mais pas où. C'est pourquoi il faut toujours fournir le morceau de requête donné dans l'erreur (en fait, la requête est citée à partir du caractère certainement en erreur), et la requête en entier.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
manu56
le 15/12/2005 à 07:30
manu56
A vrai dire je trouve pas clairement la version de MySQL ... Je suis chez 1and1, je n'ai pas trouvé sur leur site, ni sur google :-/

Sinon voila l'erreur :
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select @i := @i + 1 as i , login from user ) as u where login

Tu connais pas un bon bouquin ou je pourrais apprendre les requetes avec jointure, requete imbriqué etc...

MErci :)
Répondre
LoadingChargement en cours