Chris,
Vous obtenez seulement 3 rangs parce que votre ligne de haut niveau est pas défini comme il se doit pour traiter les requêtes hiérarchiques. Généralement, la ligne de niveau supérieur, ou le président KING dans la table EMP bien connue d'Oracle, n'a pas de gestionnaire. Dans votre cas, vous ne devez pas définir le parentid de 17389 à 17389 lui-même, mais à NULL. Mettez à jour la table en conséquence, ou utilisez une vue pour s'adapter à cette situation.
Un exemple:
SQL> select empno
2 , mgr
3 from emp
4 where empno in (7876,7788,7566,7839)
5/
EMPNO MGR
---------- ----------
7566 7839
7788 7566
7839 7839
7876 7788
4 rijen zijn geselecteerd.
Cette partie de la table EMP a quatre niveaux avec sa ligne de premier niveau (7839) fixé à lui-même. La même chose que votre empid 17839. Et cela conduit à trois lignes à l'aide de votre requête:
SQL> select level
2 , empno
3 , mgr
4 from emp
5 connect by nocycle prior mgr = empno
6 start with empno = 7876
7/
LEVEL EMPNO MGR
---------- ---------- ----------
1 7876 7788
2 7788 7566
3 7566 7839
3 rijen zijn geselecteerd.
Soit utiliser un (en ligne) en vue de définir la colonne mgr/parentid null pour le niveau supérieur:
SQL> select level
2 , empno
3 , mgr
4 from (select empno
5 , nullif(mgr,empno) mgr
6 from emp
7 )
8 connect by nocycle prior mgr = empno
9 start with empno = 7876
10/
LEVEL EMPNO MGR
---------- ---------- ----------
1 7876 7788
2 7788 7566
3 7566 7839
4 7839
4 rijen zijn geselecteerd.
Ou fixer vos données avec une instruction UPDATE:
SQL> update emp
2 set mgr = null
3 where empno = 7839
4/
1 rij is bijgewerkt.
SQL> select level
2 , empno
3 , mgr
4 from emp
5 connect by nocycle prior mgr = empno
6 start with empno = 7876
7/
LEVEL EMPNO MGR
---------- ---------- ----------
1 7876 7788
2 7788 7566
3 7566 7839
4 7839
4 rijen zijn geselecteerd.
Et vous pouvez laisser le mot-clé NOCYCLE aussi bien, après avoir terminé la fixation.
Cordialement, Rob.
Malheureusement, ça ne va pas fonctionner. Le niveau supérieur aura un tas de niveau 2, mais je veux seulement le niveau 2 dans la hiérarchie au-dessus du niveau 4. Pensez employé, gestionnaire, directeur, VP-directeur et VP peut voir les données créées par un employé, mais un autre directeur qui rend compte à ce directeur ne peut pas. – chris