Effectuer le tri des données

Résolu
Nicodoss Messages postés 56 Statut Membre -  
Nicodoss Messages postés 56 Statut Membre -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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. Nicodoss Messages postés 56 Statut Membre
       
      Merci. jordane,je vais essayé ta réponse pour voir... Encore une fois merci
      0
    2. Nicodoss Messages postés 56 Statut Membre
       
      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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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. Nicodoss Messages postés 56 Statut Membre
       
      oki, c'est pas grave, je vais essayé de créer une fonction qui va pouvoir m'aider à mieux effectuer le tri
      0
  3. Nicodoss Messages postés 56 Statut Membre
     
    COOL ca marche
    0