[MySQL] Requete et tri

Requete et tri [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 06-10-2004 à 21:37:08    

J'ai une requete dans ma base qui est du type
 
"select * from table order by nom"
 
mais "nom" est comme ceci (alphanumérique) : truc 1, truc 2, ...
 
Il me classe cela comme ceci :
truc 1
truc 14
truc 2
 
alors que je voudrais :
truc 1
truc 2
truc 14
 
mais je sais pas comment faire.

Reply

Marsh Posté le 06-10-2004 à 21:37:08   

Reply

Marsh Posté le 06-10-2004 à 22:00:21    

Je ne sais pas comment faire avec mysql. :o
Mais tu peux toujours retraiter les résultats. Par exemple en PHP avec la fonction natsort.

Reply

Marsh Posté le 06-10-2004 à 23:12:44    

salut,
Tu peu le trier avec php (avec mysql je c pas).
Mais le plus facile et le plus rapide c'est de créer une autre colonne :
 
colonne1 | colonne2
truc     |  1
truc     |  2
 
et com ca ce sera facile a classer

Reply

Marsh Posté le 07-10-2004 à 00:47:20    

Argh ca m'arrange pas trop de le faire en php! Enfin s'il y a que cette solution!

Reply

Marsh Posté le 07-10-2004 à 01:02:25    

à ce moment là, vire le orderby, histoire de pas trier 2 fois ...

Reply

Marsh Posté le 07-10-2004 à 13:54:55    

une autre méthode, mais ça t'oblige à modifier (par requete si tu en as bcp) tes anciens enregistrements, de manière à avoir:
truc 01
truc 02
truc 14
 
(et penser dès maintenant à prévoir plus de chiffre si tu sais que tu sera amené à gérer 1000 ou 10000 enregistrements plus tard)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 07-10-2004 à 15:13:55    

mauvaise modélisation de ta base ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 07-10-2004 à 15:15:21    

pourquoi t'as stocké le numéro dans la chaine si c'est si important pour toi ?

Reply

Marsh Posté le 07-10-2004 à 18:22:22    

En fait ce sont des "titres" dans un champ de la base de données, il se fait que certains se présentent comme ca, mais dans l'ensemble, je n'ai pas toujours la même structure de donnée!
 
pour l'instant j'ai :
 
Catalogue 1 : Avril 2004
Catalogue 2 : Mais 2004
etc....
Jusque 20 +/-
 
Mais j'ai aussi :
 
Document concernant l'exposition du 15 février
Ancien catalogue
....
enfin plein de trucs qui ont une structure différente.
 
Donc je suis un peu bloqué. Je me suis résigné à stocker tous les champs dans un tableau php et trier mais, ca change rien à mon problème, car j'arrive pas non plus à trier comme je voudrais.


Message édité par Koybe le 07-10-2004 à 19:41:38
Reply

Marsh Posté le 07-10-2004 à 18:32:56    

Bon c'est pas génialissime mais bon ...
"select * from table order by char_length(nom),nom" ?
 
en espérant que tu n'as pas des trucs genre
"catalogue    1","catalogue 12", ...


Message édité par Mr Mala le 07-10-2004 à 18:33:42
Reply

Marsh Posté le 07-10-2004 à 18:32:56   

Reply

Marsh Posté le 07-10-2004 à 19:40:16    

// a effacer


Message édité par Koybe le 07-10-2004 à 19:41:25
Reply

Marsh Posté le 07-10-2004 à 19:41:11    

Oups désolé, on peut effacer l'autre post? Sinon je vais essayer ton idée. Merci.

Reply

Marsh Posté le 07-10-2004 à 21:59:25    

hehe marche pas car il y a du texte derrière

Reply

Marsh Posté le 07-10-2004 à 22:01:09    

ha oui merde .. j'avais pas fait attention .. sorry ! :/

Reply

Marsh Posté le 08-10-2004 à 09:40:39    

Mr Mala a écrit :

ha oui merde .. j'avais pas fait attention .. sorry ! :/

il l'avait surtout pas dit.  
 


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 08-10-2004 à 09:53:40    

Tu dois pouvoir te démerder avec une combinaison des fonctions de manipulation de chaines de mysql pour extraire ton nombre seul...voir substring, instr, trim, lpad, locate, etc...
http://dev.mysql.com/doc/mysql/fr/ [...] tions.html


Message édité par skeye le 08-10-2004 à 09:56:02

---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed