Effectuer le tri des données

Résolu
Nicodoss Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
Nicodoss Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -
J'ai une liste d'objectifs de cours avec des en-têtes comme:
En supposant une table titre(idtitre [numeric autoincrement], numtitre[varchar], nomtitre[varchar]) avec numtitre suivant l'ordre ci-dessous;

1.0
1.1
1.1.1
1.1.2
2.0
2.1
10
10.1
11
11.1




Mais lorsque je fais un order by numtitre j'ai pas l'ordre qu'il me faut.
J'obtiens ceci
1.0
1.1
1.1.1
1.1.2
10
10.1
11
11.1
2.0
2.1
etc........
Si vous avez des idées merci de vraiment m'aider

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et en essayant un truc du style :
ORDER BY 
( SUBSTRING_INDEX(numtitre,'.',1) *1000 +                      SUBSTRING_INDEX(SUBSTRING_INDEX(numtitre,'.',2),'.',-1)  * 100 +
                    SUBSTRING_INDEX(SUBSTRING_INDEX(numtitre,'.',3),'.',-1) * 10)
1
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,
Je pense qu'en jouant avec du substring_index pour trier par le premier nombre, puis le second, puis le troisieme devrait fonctionner.

SELECT *
FROM titre
ORDER BY  SUBSTRING_INDEX(numtitre,'.',1) ,
                     SUBSTRING_INDEX(SUBSTRING_INDEX(numtitre,'.',2),'.',-1) ,
                    SUBSTRING_INDEX(SUBSTRING_INDEX(numtitre,'.',3),'.',-1)

NB: Je ne suis descendu qu'à trois niveaux.


0
Nicodoss Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
Merci. jordane,je vais essayé ta réponse pour voir... Encore une fois merci
0
Nicodoss Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, j'ai finalement essayé la requête mais hélas j'ai pas obtenu le résultat souhaité.
En effet, voici ce que j'ai finalement obtenu
1
1.1
1.1.1
10
11.0
2
2.1
Cordialement
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
le problème c'est que ton champ est en varchar ....
Il sera donc très compliqué d'y arriver.
Là comme ça je n'ai pas d'autre idée....
0
Nicodoss Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
oki, c'est pas grave, je vais essayé de créer une fonction qui va pouvoir m'aider à mieux effectuer le tri
0
Nicodoss Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
COOL ca marche
0