Effectuer le tri des données

Résolu/Fermé
Nicodoss Messages postés 39 Date d'inscription vendredi 16 décembre 2016 Statut Membre Dernière intervention 30 août 2019 - 15 janv. 2018 à 15:58
Nicodoss Messages postés 39 Date d'inscription vendredi 16 décembre 2016 Statut Membre Dernière intervention 30 août 2019 - 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

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 16 janv. 2018 à 11:53
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
15 janv. 2018 à 17:00
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 39 Date d'inscription vendredi 16 décembre 2016 Statut Membre Dernière intervention 30 août 2019
15 janv. 2018 à 18:34
Merci. jordane,je vais essayé ta réponse pour voir... Encore une fois merci
0
Nicodoss Messages postés 39 Date d'inscription vendredi 16 décembre 2016 Statut Membre Dernière intervention 30 août 2019
Modifié le 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
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
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....
0
Nicodoss Messages postés 39 Date d'inscription vendredi 16 décembre 2016 Statut Membre Dernière intervention 30 août 2019
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
0
Nicodoss Messages postés 39 Date d'inscription vendredi 16 décembre 2016 Statut Membre Dernière intervention 30 août 2019
16 janv. 2018 à 12:03
COOL ca marche
0