# 如何找出某一 Node 的所有后代子孙?

Posted by Sephiroth on June 10, 1999 at 10:32:08:

假设有一资料表内容如下:
ID ChildID
------------------
1 2
1 3
2 4
2 5
3 17
4 6
4 7
5 8
5 9
6 10
8 11
10 13
10 14
11 13
11 14
12 1
13 15
13 16
17 6
17 7

ID: Node ID, ChildID: Node Children ID
按照这个 Table可以画成一棵 Tree. 然后就发生了以下问题:

1.如何找出 RootNode?
a:用 SELECT * FROM Relationship WHERE ID NOT IN (SELECT ChildID FROM Relationship)

2.某一个 Node的第一层 Child?
a:这比较简单, SELECT * FROM Relationship WHERE ID=xxx

3.如何列出某一 Node的所有后代子孙?
a:这一题我就做不出来了, 第二层的 Child 可以用
SELECT * FROM Relationship WHERE ID IN
(SELECT ChildID FROM Relationship WHERE ID=xxx)找出,
同理: 第三层, 第四层..第 n 层, 只要增加 SubQuery 的层次就可以了,
但是我还没有试出可以一次指定某一个 Node就列出此 Node的所有后代子孙
的叙述, 有没有 SQL高手可以相助回答这问题?

Follow Ups:

- 附上 Recursive 的程式码 Sephiroth 11:20:05 6/10/99 (0)