2012-07-25 161 views
2

我有一個使用ParentID列的表;表示層次結構的標準方式。計算層次結構列

我已閱讀關於hierarchyid的所有好東西,並且需要它來查詢具有特定祖先的所有記錄。問題是將錶轉換爲使用hierarchyid將需要許多我目前沒有時間的更改。

是否有可能創造:

一個計算列,它是類型的HIERARCHYID

OR

該表的一個HIERARCHYID索引視圖

我想做一個遞歸計算hierarchyid的函數,但是在性能方面不會很好。

+1

有一下使用[遞歸CTE(http://msdn.microsoft.com/en-us/library/ms186243(V = SQL.105)的.aspx )。您可以使用它來構建層次結構ID或執行您需要的實際查詢。 – 2012-07-25 10:48:25

+1

謝謝,我用遞歸CTE構建了一個擴展每個孩子的祖先的視圖。我的桌子有幾千條記錄,運行順暢。如果您將評論推薦給答案,我可以將其標記爲已解決。 – Omtara 2012-07-27 20:06:29

回答

1

看一看使用reqursive CTE

+0

我在視圖中使用了以下遞歸CTE: WITH ancestorCte(AncestorID,ID)AS(SELECT ParentID,ID FROM dbo.MyTable AS t UNION ALL SELECT p.AncestorID,c.ID FROM dbo.MyTable AS c INNER JOIN 祖先cte AS p ON c.ParentID = P.ID) SELECT AncestorID,ID FROM祖先類 – Omtara 2012-07-27 20:26:53