2010-11-15 67 views
2

我有這樣的結構表。如何選擇父母ID

ElementId | ParentId 
------------------- 
1   | NULL 
2   | 1 
3   | 2 
4   | 3 

假設當前元素有Id 4.我想選擇所有的父標識符。 結果應該是:3,2,1

我該怎麼辦呢? DB是MSSQL

回答

2

您可以使用遞歸查詢此:http://msdn.microsoft.com/en-us/library/aa175801(SQL.80).aspx

您可以使用它像這樣:

with Hierachy(ElementID, ParentID, Level) as (
    select ElementID, ParentID, 0 as Level 
    from table t 
    where t.ElementID = X -- insert parameter here 
    union all 
    select t.ElementID, t.ParentID, th.Level + 1 
    from table t 
    inner join Hierachy th 
    on t.ParentId = th.ElementID 
) 
select ElementID, ParentID 
from Hierachy 
where Level > 0 
+1

它切換p這裏參考t.ParentId = th.ElementID – 2010-11-15 12:48:30

1

我想這可能是最容易做到以下幾點:

while parent != NULL 
    get parent of current element 

我想不出在普通的SQL這樣做的任何方式,不會對較大的數據庫引起的問題。

-1
如果你想純SQL嘗試

select ParentId from myTable Desc 

,將在MySQL工作...您可能需要修改Desc(按降序排列)部分