我在 SQL Server 2000 中有以下树的场景。
有两个表的数据库,形象地说
Table1
(Row_Id int,Id char(9)等)
和
Table2
(Row_Id int、Parent_Id char(9)、Parent_Parent_Id char(9)等)。
Parent_Id
inTable2
指的是Id
in Table1
。
Parent_Parent_Id
in也Table2
指Id
in Table1
(因此孩子可以有多个父母)。
例如,让我们考虑包含一些数据的表:
表格1
Row_Id Id
1 a
2 b
3 c
4 d
5 e
6 ...
表2
Row_Id Parent_Id Parent_Parent_Id
1 a b
2 b с
3 c d
4 d e
5 ... ...
这个带有数据的场景表明,带有Id
“a”的元素Table1
没有更多的父元素,并且带有Id
“a”的元素的最后一个父元素是“e”。
换句话说,我想用输入参数inId
(它是任何Id
from Table1
)编写存储过程,因此我想得到最后一个没有父级的父级。
现在我通过循环来做到这一点
SELECT ...
FROM Table1
LEFT JOIN Table2 ON Table1.Id = Table2.Parent_Id
WHERE Table1.Id = inId
直到我进入NULL
正确的位置。
你认为有没有更好的方法来做到这一点?
谢谢你。