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 :
Ce resultset me permet de créer une arborescence triée en fonction de l'ordre d'encodage.
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
A l'affichage ça donne :
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.)
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
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 FFFPensez-vous que c'est réalisable directement en SQL ou dois-je obligatoirement trier l'arborescence via la page de présentation?
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
Merci pour votre aide, et bon casse tête ;-)
Partager