Bonjour,
J'ai une table qui représente les liens entre les différents type de structures pouvant composer un établissement.
La table est : annuaire.arbre_structure(structure_str_id, structure_str_id_child)
je souhaiterais créer une fonction qui à partir de l'id d'une structure me donne toutes les types de sous structures possibles. Problème les cycles sont tout à fait possible.
Je suppose que la vérité est dans la récursion mais j'avoue ne pas trop savoir comment arrêter celle ci.
J'ai essayer ceci qui boucle infiniment si je ne met pas une condition d'arrêt sur la profondeur :
Précision au cas où je suis sous 9.4.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 WITH RECURSIVE children(structure_str_id, structure_str_id_child, depth) AS ( SELECT arbre.structure_str_id, arbre.structure_str_id_child , 1 FROM annuaire.arbre_structure AS arbre WHERE arbre.structure_str_id = 1 -- change this to the root id UNION ALL SELECT distinct arbre.structure_str_id, arbre.structure_str_id_child , children.depth + 1 FROM annuaire.arbre_structure AS arbre JOIN children ON arbre.structure_str_id = children.structure_str_id_child WHERE depth < 10 ) SELECT * FROM children;
Merci d'avance !
Partager