Page 1 sur 1
Probleme d'order by dans un select
Posté : 25 juil. 2005, 16:36
par Erwin
Bonjour,
J'ai un petit probleme, rien de bien grave mais cela est embétant dans l'affichage.
Je m'explique, je souhaite trié mes données de ma base de donnée en ordre croissant donc ORDER BY Reference ASC!!Mais mon champs se compose comme ça :
-IA1
-IA2
-IA10...
Lors de l'affichage il me classe mes informations comme ça :
-IA1
-IA10
-IA2...
Pourquoi??Il les classe en binaire on dirait!!!Comment résoudre mon problème???
Informations :
-Serveur EasyPHP
-Mon champ est de type char(20)
Merci d'avance
Posté : 25 juil. 2005, 16:39
par zeus
le probleme c'est qu'il fait un tri sur un champs vaarchar. Le tri se déroule de cette manière : on compare les caractère 1 par 1 et en cas d'égalité, on trie donc :
1ere lettre : I, on cherche la suite
2eme lettre : A, on cherche la suite
3eme lettre : 1 et 2 => on met 2 à la fin et on cherche la suite
4eme lettre : vide et 0 on met vide en 1er et 0 en second
pour résoudre, je pense qu'il faut caster les 2 dernières lettres en chiffre
Posté : 25 juil. 2005, 16:44
par Erwin
Merci zeus mais comment tu castev les 1ere lettre en chiffre??
Re: Probleme d'order by dans un select
Posté : 25 juil. 2005, 16:53
par zeus
Code : Tout sélectionner
ORDER BY CAST(SUBSTR(Reference, 2, LENGTH(Reference)-2) AS UNSIGNED) ASC
Posté : 25 juil. 2005, 17:01
par Invité
Encore merci mais cela marche pas!!!Il me les classe un peu n'importe comment!!
IA10
IA7
IA0....
Re: Probleme d'order by dans un select
Posté : 25 juil. 2005, 17:02
par zeus
Essaye ça et dit moi ce qui est affiché
Code : Tout sélectionner
SELECT Reference, SUBSTR(Reference, 2, LENGTH(Reference)-2) FROM ...
Posté : 25 juil. 2005, 17:07
par Invité
Cela me donne que la 2eme lettre!!!Donc A
Re: Probleme d'order by dans un select
Posté : 25 juil. 2005, 17:09
par zeus
Et ça ? et dit moi ce qui est affiché
Code : Tout sélectionner
SELECT Reference, SUBSTR(Reference, 3, LENGTH(Reference)-2), LENGTH(Reference)-2 FROM ...
Posté : 25 juil. 2005, 17:17
par Invité
Dans la 2eme collone cela me donne la tauille de ce qui a aprés les lettre donc 1 pour les reference IA1,IA2 et 2 pour IA10
Re: Probleme d'order by dans un select
Posté : 25 juil. 2005, 17:23
par zeus
Donc tente
Code : Tout sélectionner
ORDER BY CAST(SUBSTR(Reference, 3, LENGTH(Reference)-2) AS UNSIGNED) ASC
Posté : 25 juil. 2005, 17:24
par Erwin
Désolé c'est pour ma 3eme colonne que cela me metb 1 ou 2 docn g la référence puis des nombre un peu au hasard et ensuite la taille de ce qui a aprés les lettres
Posté : 25 juil. 2005, 17:27
par Erwin
Merci bocoup zeus, c'est coool cela marche!!Mais quand il va y avoir des truc du genre IA100 cela va y classer pareil???Cela regarde en fait que ce qu'il y a aprés les 2 premieres lettres c'est ça???
Merci bocoup!!!!
Re: Probleme d'order by dans un select
Posté : 25 juil. 2005, 17:33
par zeus
permet de connaitre la taille de ce qui se trouve après les lettres
permet de récupérer les chiffres qui se trouve après les lettres (que que soit la taille du chiffres)
permet de caster ces chiffres qui sont en réalité une chaine de caractère (VARCHAR) en chiffres