【问题标题】:List menu hierarchy using SQL Server hierarchyid使用 SQL Server hierarchyid 列出菜单层次结构
【发布时间】: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


    【解决方案1】:

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

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

    汤姆

    【讨论】:

    • 谢谢你,汤姆!这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    相关资源
    最近更新 更多