2011-06-21 71 views
2

我嘗試使用數據類型hierarchyid構建菜單。使用SQL Server hierarchyid列出菜單層次結構

我有根節點和當前選定的節點。現在我想列出所有與相關的wetween根節點和所選節點以及那裏的兄弟節點相關的元素。

我得到的所有相關元素與下面的SQL查詢

DECLARE @rootNode hierarchyid, @selectedNode hierarchyid 

SELECT @rootNode = MenuNode FROM CMS_Menu WHERE MenuItemID = 3; 

SELECT @selectedNode = MenuNode FROM CMS_Menu WHERE MenuItemID =15; 

SELECT CMS_Menu.MenuNode 
FROM CMS_Menu 
WHERE @selectedNode.IsDescendantOf(MenuNode) = 1 /*all related elements*/ 
AND MenuNode.GetLevel() >= @rootNode.GetLevel() /*nothing below root*/ 

現在我必須這樣做MenuNode.GetAncestor(1) =導致在上面的查詢每一行。

有沒有人有一個想法如何在SQL查詢中得到這個?

感謝:)

回答

0

不完全知道我理解這個問題,但你能不能做一些像WHERE子句如下:

WHERE @selectedNode.IsDescendantOf(MenuNode.GetAncestor(1)) = 1 

湯姆

+0

謝謝你,湯姆!這正是我所期待的。 –