【发布时间】:2011-06-21 09:15:17
【问题描述】:
我尝试使用数据类型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) = result 之类的操作。
有人知道如何在 sql 查询中得到这个吗?
谢谢:)
【问题讨论】:
标签: sql-server menu hierarchyid