2

我尝试使用 datatype 构建菜单hierarchyid

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

我通过以下 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)现在我必须对上面查询中的每一行执行类似= result 的操作。

有谁知道如何在 sql 查询中得到这个?

谢谢 : )

4

1 回答 1

0

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

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

汤姆

于 2011-06-23T09:08:25.033 回答