Menu

Effectuer le tri des données [Résolu]

Nicodoss 32 Messages postés vendredi 16 décembre 2016Date d'inscription 13 février 2018 Dernière intervention - 15 janv. 2018 à 15:58 - Dernière réponse : Nicodoss 32 Messages postés vendredi 16 décembre 2016Date d'inscription 13 février 2018 Dernière intervention
- 16 janv. 2018 à 12:03
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
Afficher la suite 

7 réponses

Répondre au sujet
jordane45 20020 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 février 2018 Dernière intervention - Modifié par jordane45 le 16/01/2018 à 11:53
+1
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jordane45
jordane45 20020 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 février 2018 Dernière intervention - 15 janv. 2018 à 17:00
0
Utile
4
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.


Nicodoss 32 Messages postés vendredi 16 décembre 2016Date d'inscription 13 février 2018 Dernière intervention - 15 janv. 2018 à 18:34
Merci. jordane,je vais essayé ta réponse pour voir... Encore une fois merci
Nicodoss 32 Messages postés vendredi 16 décembre 2016Date d'inscription 13 février 2018 Dernière intervention - 16 janv. 2018 à 09:09
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
jordane45 20020 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 février 2018 Dernière intervention - 16 janv. 2018 à 09:12
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....
Nicodoss 32 Messages postés vendredi 16 décembre 2016Date d'inscription 13 février 2018 Dernière intervention - 16 janv. 2018 à 11:37
oki, c'est pas grave, je vais essayé de créer une fonction qui va pouvoir m'aider à mieux effectuer le tri
Commenter la réponse de jordane45
Nicodoss 32 Messages postés vendredi 16 décembre 2016Date d'inscription 13 février 2018 Dernière intervention - 16 janv. 2018 à 12:03
0
Utile
COOL ca marche
Commenter la réponse de Nicodoss