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
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
-
ModérateurEt 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) -
ModérateurBonjour,
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.
-
COOL ca marche