Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
565 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] order by "quoi ?" quand on veut ref1, ref2, ref10, ref11 ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] order by "quoi ?" quand on veut ref1, ref2, ref10, ref11 ...

n°879749
Pizz
Vive les Tomates !
Posté le 22-10-2004 à 09:40:00  profilanswer
 

salut,
 
j'ai un champ "ref" de type VARCHAR composé de :
 
référence 1
référence 2
...
référence 9
référence 10
référence 11
...
 
quand je lui demande de faire un ORDER BY ref :
 
1
10
11
2
...
 
quand je lui demande de faire un ORDER BY ref ASC :
 
1
10
11
2
...
 
quand je lui demande de faire un ORDER BY ref DESC :
 
9
...
2
...
11
10
1
 
 
une solution pour avoir :
 
1
2
...
9
10
11
...
 
 
Merci  :jap:


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
mood
Publicité
Posté le 22-10-2004 à 09:40:00  profilanswer
 

n°879757
skeye
Posté le 22-10-2004 à 09:49:37  profilanswer
 

Normal, ce sont des chaines de caractères.
Si tu veux cet ordre, remplis de zéros à gauche...
 
[edit]
 
Voir fonction LPAD.


Message édité par skeye le 22-10-2004 à 09:50:20

---------------
Can't buy what I want because it's free -
n°879771
Pizz
Vive les Tomates !
Posté le 22-10-2004 à 09:57:49  profilanswer
 

skeye a écrit :

Normal, ce sont des chaines de caractères.
Si tu veux cet ordre, remplis de zéros à gauche...
 
[edit]
 
Voir fonction LPAD.


si je mets des 0, ça va faire moche surtout que la base va être alimentée avec plus de 10000 références.
 
je vais voir du coté de LPAD.
 
merci  :jap:


Message édité par Pizz le 22-10-2004 à 09:58:44

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°879774
sircam
I Like Trains
Posté le 22-10-2004 à 10:02:06  profilanswer
 

Convertis ton champs VARCHAR vers un type numérique dans ton query. De cette façon, l'ordre souhaité sera respecté.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°879783
Pizz
Vive les Tomates !
Posté le 22-10-2004 à 10:12:22  profilanswer
 

sircam a écrit :

Convertis ton champs VARCHAR vers un type numérique dans ton query. De cette façon, l'ordre souhaité sera respecté.


 
je fais ça comment ? (je vais chercher sur le net pour savoir comment faire, mais si tu as la réponse, ça ira un peu plus vite).
 
un peu plus d'infos :
 
je travaille en PHP
les références sont des séries de livres :
livreA 1 -> livreA 10000
livreB 1 -> livreB 100
livreB 1 -> livreC 25
...
 


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°879784
skeye
Posté le 22-10-2004 à 10:14:40  profilanswer
 

Pizz a écrit :

je fais ça comment ? (je vais chercher sur le net pour savoir comment faire, mais si tu as la réponse, ça ira un peu plus vite).
 
un peu plus d'infos :
 
je travaille en PHP
les références sont des séries de livres :
livreA 1 -> livreA 10000
livreB 1 -> livreB 100
livreB 1 -> livreC 25
...


A ma connaissance mysql n'a pas de fonction spécifique comme le to_number d'oracle... :??:
Sinon j'ai rien compris à ton histoire de références...[:dawa]


---------------
Can't buy what I want because it's free -
n°879880
Pizz
Vive les Tomates !
Posté le 22-10-2004 à 11:39:31  profilanswer
 

skeye a écrit :

A ma connaissance mysql n'a pas de fonction spécifique comme le to_number d'oracle... :??:
Sinon j'ai rien compris à ton histoire de références...[:dawa]


 
c'est pas grave pour l'explication, j'ai créé une table avec les noms de références, et je fais une relation avec le numéro.
 
ça sera plus simple  :o


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°879912
Sebastien
Posté le 22-10-2004 à 12:14:59  profilanswer
 

essaye un truc barbare du genre
order by SUBSTRING_INDEX(ref,' ',-1) + 1

n°879915
Pizz
Vive les Tomates !
Posté le 22-10-2004 à 12:17:45  profilanswer
 

pour finir ça ne va pas non plus la méthode que j'ai trouvé vu qu'il y a des livres avec la référence "2003-2004 /1", "2003-2004 /113", ...
 
j'essaye ton truc Sebastien ;)


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°879920
Sebastien
Posté le 22-10-2004 à 12:20:19  profilanswer
 

tu as des reference completement heterogène, comme veux tu pouvoir faire un tri ?
qui est avant
livreA 1
ou livreA 2003-2004/1

mood
Publicité
Posté le 22-10-2004 à 12:20:19  profilanswer
 

n°879921
Pizz
Vive les Tomates !
Posté le 22-10-2004 à 12:20:35  profilanswer
 

ça fonctionne !
 
mais il faut le même début avant les chiffres.
mais ce n'est pas un problème pour mon cas.
 
Merci beaucoup Sebastien  :jap:


Message édité par Pizz le 22-10-2004 à 12:21:37

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°879931
Pizz
Vive les Tomates !
Posté le 22-10-2004 à 12:25:05  profilanswer
 

Sebastien a écrit :

tu as des reference completement heterogène, comme veux tu pouvoir faire un tri ?
qui est avant
livreA 1
ou livreA 2003-2004/1


 
ça j'en peux rien si les auteurs des livres font du n'importe quoi ...
 
le principal c'est que c'est bien trié et que les 2003-2004 /1, 2003-2004 /2, ... soient séparés des 1, 2, 3 ...
 
merci :jap:


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°879996
Arjuna
Aircraft Ident.: F-MBSD
Posté le 22-10-2004 à 13:39:07  profilanswer
 

select ref
from ...
order by lpad(ref, 2, '0')
 
ça doit marcher, comme l'a dit skeye, et en sortie du n'aura pas de 0 puisqu'il n'y a pas de lpad dans le select.
 
de la même façon, tu peux aussi faire :
 
select ref
from ...
order by to_number(ref)
 
Sauf que là ça va planter si un jour ref contient autrechose qu'un nombre (et si c'est un varchar, il y a surement une raison)

n°880024
Sebastien
Posté le 22-10-2004 à 14:18:52  profilanswer
 

ben c deja le cas, il contient le mot reference donc aucun des deux systemes que tu utilises fonctionne.
 
De plus to_number existe pas en MySQL, cest la fonction cast() qui est très recente.
Mais MySQL est on va dire intelligent si tu lui fais une addition entre un char et un nombre, il va transformer ca en nombre si possible, c'est le +1 de ma solution.

n°880144
Pizz
Vive les Tomates !
Posté le 22-10-2004 à 15:52:44  profilanswer
 

oui, la solution de Sebastien marche à merveille (pour mon cas en tout cas)  :)


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] order by "quoi ?" quand on veut ref1, ref2, ref10, ref11 ...

 

Sujets relatifs
PHP sans MYSQL sur IIS?[MySQL] Optimisation requete sur ENORME table ...
[mysql]connexion localhostProblème avec les accents en mysql
[Réglé] Espacement, saut de ligne>>MySQL>>AffichageAccess sait-il remplir une base MySQL ?
[PHP/MySQL] affichage dans l'ordre inverse de la table ?[ MYSQL ] Tableau dans Php indiquant bdd
gestion avec base mysql[PHP/MySQL] ...ORDER BY (a+b) desc ???
Plus de sujets relatifs à : [MySQL] order by "quoi ?" quand on veut ref1, ref2, ref10, ref11 ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR