Per treballar amb SQL amb taules amb relacions amb elles mateixes, cal utilitzar l’operació CONNECT BY PRIOR de Oracle:
SELECT LEVEL, MGR MANAGER, LPAD(EMPNO,5*(LEVEL-1)) REPORTEE FROM EMPLOYEE START WITH MGR IS NULL CONNECT_BY PRIOR EMPNO=MGR ORDER SIBLINGS BY EMPNO ; LEVEL MANAGER REPORTEE ---------- ---------- -------------------- 1 2 100 110 3 110 160 4 160 180 3 110 170 2 100 120 3 120 140 3 120 150 2 100 130
Una altra manera de fer el mateix amb DB2 és
WITH n(empid, name) AS (SELECT empid, name FROM emp WHERE name = 'Joan' UNION ALL SELECT nplus1.empid, nplus1.name FROM emp as nplus1, n WHERE n.empid = nplus1.mgrid) SELECT name FROM n
Més informació:
Leave a Reply