Bonjour à tous,

J'ai une table BRANCHE qui contient 3 champs (pour l'exemple) : BRANCHE_ID (integer), BRANCHE_POSITION (varchar) et BRANCHE_LIBELLE (varchar).
Voici une requête toute simple :

SELECT BRANCHE_ID, BRANCHE_POSITION, BRANCHE_LIBELLE
FROM BRANCHE
ORDER BY BRANCHE_POSITION ASC

Cette query me retourne ce resultset :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
BRANCHE_ID BRANCHE_POSITION BRANCHE_LIBELLE
1          01               AAA
2          0101             BBB
3          0102             CCC
4          02               GGG
5          0201             DDD
6          0202             FFF
7          03               EEE
8          0301             BBB
9          0302             AAA
Ce resultset me permet de créer une arborescence triée en fonction de l'ordre d'encodage.
A l'affichage ça donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
- AAA
   - BBB
   - CCC
- GGG
   - DDD
   - FFF
- EEE
   - BBB
   - AAA
Une BRANCHE_POSITION (x fois 2 chiffres consécutifs) offre de multiples informations (décalage par rapport à la racine, ordre des frères, qui est son parent etc.)
Jusque là c'est plutôt simple, si à l'encodage l'utilisateur souhaite insérer une branche au milieu de tout, il suffit de modifier les BRANCHE_POSITION et le tour est joué.

Maintenant, ce que je souhaiterais faire, c'est de laisser l'utilisateur encoder là où il veut, mais à l'affichage de trier l'arbre automatiquement sur le libellé, tout en gardant la notion de parent (un enfant doit rester enfant de son parent)...

Le résultat souhaité est donc

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
BRANCHE_ID BRANCHE_POSITION BRANCHE_LIBELLE
1          01               AAA
2          0101             BBB
3          0102             CCC
7          03               EEE
9          0302             AAA
8          0301             BBB
4          02               GGG
5          0201             DDD
6          0202             FFF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
- AAA
   - BBB
   - CCC
- EEE
   - AAA
   - BBB
- GGG
   - DDD
   - FFF
Pensez-vous que c'est réalisable directement en SQL ou dois-je obligatoirement trier l'arborescence via la page de présentation?

Merci pour votre aide, et bon casse tête ;-)