Sql Server树结构表,根据子节点获取根节点,支持无限级分层
2011-01-07 12:48
288 查看
一张树结构的表,如何从一个子节点,获取到这个子节点的根节点?
表结构如下:
说明:
CategoryID 是节点编号;
CategoryName 是节点名称;
ParentCategoryID 是节点的父节点的编号;
测试数据如下:
测试用例:
已知节点ID是7,求它的根节点。(从上图,我们可以看到,结果应该是 2)
下面,给出实现SQL,一个存储过程,函数也可以
执行的语句:
表结构如下:
说明:
CategoryID 是节点编号;
CategoryName 是节点名称;
ParentCategoryID 是节点的父节点的编号;
测试数据如下:
测试用例:
已知节点ID是7,求它的根节点。(从上图,我们可以看到,结果应该是 2)
下面,给出实现SQL,一个存储过程,函数也可以
CREATE PROCEDURE GetRootCategoryID ( @nodeID INT ) AS BEGIN SET NOCOUNT ON; DECLARE @rootID INT, @currentID INT SELECT @rootID = ParentCategoryID, @currentID = @nodeID FROM test2 WHERE CategoryID = @nodeID; WHILE @rootID > 0 BEGIN SELECT @rootID = ParentCategoryID, @currentID = CategoryID FROM test2 WHERE CategoryID = @rootID; END RETURN @currentID; END
执行的语句:
DECLARE @return_value int EXEC @return_value = [dbo].[GetRootCategoryID] @nodeID = 7 SELECT 'Return Value' = @return_value
相关文章推荐
- 根据父级编号获取无限树结构数据表中所有子节点的数据
- 根据当前节点获取所有上层结构的组织(递归算法)
- sql server 树状结构表中,获取指定节点的所有父节点路径
- sql server 树状结构表中,获取指定节点的所有父节点路径
- jbpm4.4根据流程定义获取所有的流程节点Activity
- [置顶] MFC树形控件CTreeCtrl使用方法、遍历、SetCheck无效、根据名称获取节点、获取选中节点等问题
- SQL Server 获取表或视图结构信息
- TreeView根据节点获取完整路径
- (java后台)根据身份证号获取 生日、年龄、性别 (支持18位、15位身份证)
- oracle递归树形结构获取所有父节点,子节点
- 树形结构,根据父子ID生成树形节点
- sql server递归子节点、父节点,sql查询表结构,根据字段名查所在表
- SQL Server 树型结构查询指定节点 SQL Server 树型结构查询的排序
- SQLSERVER 免费对比数据库结构和数据的工具支持:SQL Server 2012, SQL Server 2008 and SQL Server 2005
- 根据电影名称(支持电视剧名称),获取下载链接。
- 根据服务名称,获取sql server 里的数据库表名
- 以迭代(非递归)方式获取无限分类中所有的最后一层子节点数据
- Xml 根据路径和属性值获取节点
- jsTree 点击节点事件及根据 ID 获取节点方法
- 如何根据节点获取该节点下的全部子节点