我在 SQL Server 2000 中有以下树的场景。
有两个表的数据库,形象地说
Table1(Row_Id int,Id char(9)等)
和
Table2(Row_Id int、Parent_Id char(9)、Parent_Parent_Id char(9)等)。
Parent_IdinTable2指的是Idin Table1。
Parent_Parent_Idin也Table2指Idin 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(它是任何Idfrom Table1)编写存储过程,因此我想得到最后一个没有父级的父级。
现在我通过循环来做到这一点
SELECT ...
FROM Table1
LEFT JOIN Table2 ON Table1.Id = Table2.Parent_Id
WHERE Table1.Id = inId
直到我进入NULL正确的位置。
你认为有没有更好的方法来做到这一点?
谢谢你。