1. 程式人生 > >如何利用SQL Server With As遞迴獲取層級關係資料

如何利用SQL Server With As遞迴獲取層級關係資料

如果已知當前使用者ID我要想知道他的上級領導有哪些,可編寫sql語句如下:

WITH    Emp   
          AS ( SELECT   ID ,   
                        EName ,   
                        ParentGUID   
               FROM     dbo.Employee   
               WHERE    ID = '5C8214EC-258B-4C44-9F31-206E499F0285'
               UNION ALL 
               SELECT   d.ID ,   
                        d.EName ,   
                        d.ParentGUID   
               FROM     Emp   
                        INNER JOIN dbo.Employee d ON d.ID = Emp.ParentGUID   
             )   
    SELECT ID,EName   
    FROM    Emp

相反,如果已知當前使用者ID,怎麼獲取他的下級呢,編寫sql語句如下
WITH    Emp   
          AS ( SELECT   ID ,   
                        EName ,   
                        ParentGUID   
               FROM     dbo.Employee   
               WHERE    ID = '0CD19311-2CA1-4120-9554-11BFD8219AF9'
               UNION ALL 
               SELECT   d.ID ,   
                        d.EName ,   
                        d.ParentGUID   
               FROM     Emp   
                        INNER JOIN dbo.Employee d ON d.ParentGUID = Emp.ID   
             )   
    SELECT ID,EName   
    FROM    Emp