Connectez-vous par ou des requêtes hiérarchiques dans les SGBDR autre que Oracle
-
29-10-2019 - |
Question
Oracle est expédié avec une fonctionnalité très pratique. Vous pouvez créer des requêtes hiérarchiques (comportement récursif) en utilisant la clause suivante:
CONNECT BY [NOCYCLE] {condition [AND condition...]} [START WITH condition]
Comme documenté ici:
http://download.oracle.com/docs/cd/b28359_01/server.111/b28286/queries003.htm
Je me demande, y a-t-il d'autres SGBDR établis qui prennent en charge une syntaxe équivalente ou similaire? Ou un comportement récursif comme celui-ci peut-il être génériquement simulé à l'aide de SQL ordinaire?
Un bon exemple que j'aimerais pouvoir simuler est ceci (tiré de la documentation Oracle):
SELECT LPAD(' ', 2 * (LEVEL-1)) || last_name org_chart,
employee_id, manager_id, job_id
FROM employees
START WITH job_id = 'AD_VP'
CONNECT BY PRIOR employee_id = manager_id;
Résultant en:
ORG_CHART EMPLOYEE_ID MANAGER_ID JOB_ID
------------------ ----------- ---------- ----------
Kochhar 101 100 AD_VP
Greenberg 108 101 FI_MGR
Faviet 109 108 FI_ACCOUNT
Chen 110 108 FI_ACCOUNT
Sciarra 111 108 FI_ACCOUNT
Urman 112 108 FI_ACCOUNT
Popp 113 108 FI_ACCOUNT
Whalen 200 101 AD_ASST
Mavris 203 101 HR_REP
Baer 204 101 PR_REP
Higgins 205 101 AC_MGR
Gietz 206 205 AC_ACCOUNT
De Haan 102 100 AD_VP
Hunold 103 102 IT_PROG
Ernst 104 103 IT_PROG
Austin 105 103 IT_PROG
Pataballa 106 103 IT_PROG
Lorentz 107 103 IT_PROG
La LEVEL
La pseudo-colonne et l'indentation réalisée avec elle n'est pas si importante pour moi
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow