Effectuer le tri des données

Résolu
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

  1. Modérateur
    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
    1. Modérateur
      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
      1. Merci. jordane,je vais essayé ta réponse pour voir... Encore une fois merci
        0
      2. 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
      3. Modérateur
        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
      4. oki, c'est pas grave, je vais essayé de créer une fonction qui va pouvoir m'aider à mieux effectuer le tri
        0