Oracle comes with a very handy feature. You can create hierarchical queries (recursive behavior) using the following sentence:
CONNECT BY [NOCYCLE] {condition [AND condition...]} [START WITH condition]
As described here:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/queries003.htm
I am wondering if there are any other RDBMS that support equivalent or similar syntax? Or maybe there is a recursive behavior like this, generally modeled using regular SQL?
A good example I would like to simulate is this (taken from Oracle documentation):
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;
Result:
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
The LEVEL pseudo-column and the indent achieved with it are not so important to me
source share