将CTE用于有多个父母的孩子

时间:2017-08-16 23:37:52

标签: sql-server

我已经为具有一对一关系的组织实施了CTE。现在我必须让一个孩子有多个父母。

我有一张表 OrgRelation ,你可以看到我在表格 OrgC 上添加了另一个父 OrgD

Child   Parent
OrgA    NULL
OrgB    OrgA
OrgC    OrgB
OrgC    OrgD

上表代表了这个树视图:

OrgA        
    OrgB    
        OrgC
    OrgD    
        OrgC

如何构建CTE查询?它与正常的CTE有什么不同?

WITH CTE AS   
(  
    SELECT Parent, Child, 0 AS Level
    FROM dbo.OrgRelation
    WHERE Parent IS NULL  
    UNION ALL  
    SELECT e.Parent, e.Child, Level + 1  
    FROM dbo.OrgRelation AS e  
        INNER JOIN CTE AS d  
        ON e.Parent = d.Child
)  
SELECT Parent, Child, Level   
FROM CTE;

此外,如果我从下到上,我应该得到两个不同的结构,一个来自OrgD,另一个来自OrgB吧?

0 个答案:

没有答案