如何在不使用With子句的情况下显示Parent-Child-GrandChild关系?

时间:2013-10-23 11:47:30

标签: sql sql-server-2008

我的表结构如下:

Id  Name    Parent
1   A-1 0
2   B-1 0
3   A-11    1
4   A-12    1
5   A-13    1
6   A-14    1
7   A-111   3
8   A-112   3
9   A-113   3
10  A-114   3
11  B-11    2
12  B-12    2
13  B-13    2
14  B-14    2
15  B-111   11
16  B-112   11
17  B-113   11
18  B-114   11

我想要显示

Id  Name    Parent  GrandParentName
1   A-1     0   
2   B-1     0   
3   A-11    1   
4   A-12    1   
5   A-13    1   
6   A-14    1   
7   A-111   3   A-1
8   A-112   3   A-1
9   A-113   3   A-1
10  A-114   3   A-1
11  B-11    2   
12  B-12    2   
13  B-13    2   
14  B-14    2   
15  B-111   11  B-1
16  B-112   11  B-1
17  B-113   11  B-1
18  B-114   11  B-1

不使用With Clause和Inner Query?

1 个答案:

答案 0 :(得分:3)

好吧不能说我喜欢它(它不是通用的,使用固定连接),但如果你只想要GrandParent名字,你可以用2个连接来做:

select T.Id, T.Name, T.Parent, G.Name as GrandParentName
from Table1 as T
    left outer join Table1 as P on P.Id = T.Parent
    left outer join Table1 as G on G.Id = P.Parent
order by T.Id asc

<强> sql fiddle demo