El Noguer

Joaquim Perez i Noguer

SQL PRIOR

Filed under: Ciència i tecnologia — Joaquim Perez Noguer at 4:04 pm on Dimecres, Novembre 15, 2017

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ó:



No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>