2016-03-22 10 views
0

Ich habe Tabelle Acc_Region.Holen Sie alle Knoten mit Bezug auf Eltern in SQL

enter image description here

Ich brauche alle Knoten mit der Mutter -Delta Sektor- Bezug zu wählen, wenn ich Abfrage verwenden als

select Name from Acc_Region where ID = 1 

erhalten alle

Cairo 
Faysl City 
Helwan City 
Giza 
Aiat 
Saf 

zitiert ich versuche zu verwenden, :

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 

Aber es gibt ein Problem mit RECURSIVE.

Gibt es eine Möglichkeit, dieses Problem zu lösen?

+0

Also das Problem, das Sie konfrontiert sind, ist die Effizienz? –

Antwort

1

Dies ist, wie der rekursive CTE aufgebaut sein sollte:

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

Ausgezeichnet Fertig (Y). –

Verwandte Themen