2016-03-22 18 views
0

私はテーブルAcc_Regionを持っています。SQLで親に関連するすべてのノードを取得

select Name from Acc_Region where ID = 1 

はすべて私が使用しようと

Cairo 
Faysl City 
Helwan City 
Giza 
Aiat 
Saf 

を引き合いに出してもらうように私は、クエリを使用したとき、私は親 - デルタSector- に関連するすべてのノードを選択する必要が

enter image description here

WITH RECURSIVE Region (ID, name, Parent_ID) AS 
(
    SELECT ID, 
      name, 
      Parent_ID 
    FROM ACC_REGION 
    UNION ALL 
    SELECT Acc.ID, 
      Acc.name, 
      Acc.Parent_ID 
    FROM ACC_REGION Acc 
     JOIN Region Reg ON Acc.userid = Reg.managerid 
) 
SELECT *FROM ACC_REGION 

しかし、RECURSIVEに問題があります。

この問題を解決する方法はありますか?

+0

あなたが直面している問題は、効率のですか? –

答えて

1

これは再帰CTEを構築する方法である。

WITH RECURSIVE_Region(ID, NAME, PARENT_ID) AS 
(
    -- Anchor member: get root node 
    SELECT ID, NAME, PARENT_ID 
    FROM Acc_Region 
    WHERE ID = 1 

    UNION ALL 

    -- Recursive member: get nodes of next level 
    SELECT t1.ID, t1.NAME, t1.PARENT_ID 
    FROM Acc_Region AS t1 
    JOIN RECURSIVE_Region AS t2 ON t1.PARENT_ID = t2.ID 
) 
SELECT * 
FROM RECURSIVE_Region 
+0

優良完了(Y)。 –

関連する問題