使用SQL Server hierarchyid列出菜单层次结构

时间:2011-06-21 09:15:18

标签: sql-server menu hierarchyid

我尝试使用数据类型hierarchyid构建菜单。

我有根节点和当前选定的节点。现在我想列出所有与根和所选节点以及兄弟姐妹相关的元素。

我使用以下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查询中获取它?

谢谢:)

1 个答案:

答案 0 :(得分:0)

我不完全确定我理解这个问题,但你不能用WHERE子句做以下的事情:

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

汤姆