2

我的表结构是这样的:

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 子句和内部查询?

4

1 回答 1

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

于 2013-10-23T12:00:41.023 回答