我尝试使用数据类型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查询中获取它?
谢谢:)
答案 0 :(得分:0)
我不完全确定我理解这个问题,但你不能用WHERE子句做以下的事情:
WHERE @selectedNode.IsDescendantOf(MenuNode.GetAncestor(1)) = 1
汤姆