数据库 SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点
2010-07-02 16:09
615 查看
数据库 SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点
创建表
Create Table A
(IDInt,
fatherIDInt,
NameVarchar(10)
)
Insert A Select 1, NULL, 'tt'
Union All Select 2, 1, 'aa'
Union All Select 3, 1, 'bb'
Union All Select 4, 2, 'cc'
Union All Select 5, 2, 'gg'
Union All Select 6, 4, 'yy'
Union All Select 7, 4, 'jj'
Union All Select 8, 7, 'll'
Union All Select 9, NULL, 'uu'
Union All Select 10, 9, 'oo'
GO
创建函数
//取字子节点
Create Function GetChildren(@ID Int)
Returns @Tree Table (ID Int, fatherID Int, Name Varchar(10))
As
Begin
Insert @Tree Select ID, fatherID, Name From A Where fatherID = @ID
While @@Rowcount > 0
Insert @Tree Select A.ID, A.fatherID, A.Name From A A Inner Join @Tree B
On A.fatherID = B.ID And A.ID Not In (Select ID From @Tree)
Return
End
GO
//取父节点
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER Function [dbo].[GetParent](@ID Int)
Returns @Tree Table (ID Int, fatherID Int, NameVar Varchar(10))
As
Begin
Insert @Tree Select ID, fatherID, NameVar From A Where ID = @ID
While @@Rowcount > 0
Insert @Tree Select A.ID, A.fatherID, A.NameVar From A A Inner Join
@Tree B On A.ID = B.fatherID And A.ID Not In (Select ID From @Tree)
Return
End
--測試
Select * From dbo.GetChildren(1)
Select * From dbo.GetParent(9)
GO
创建表
Create Table A
(IDInt,
fatherIDInt,
NameVarchar(10)
)
Insert A Select 1, NULL, 'tt'
Union All Select 2, 1, 'aa'
Union All Select 3, 1, 'bb'
Union All Select 4, 2, 'cc'
Union All Select 5, 2, 'gg'
Union All Select 6, 4, 'yy'
Union All Select 7, 4, 'jj'
Union All Select 8, 7, 'll'
Union All Select 9, NULL, 'uu'
Union All Select 10, 9, 'oo'
GO
创建函数
//取字子节点
Create Function GetChildren(@ID Int)
Returns @Tree Table (ID Int, fatherID Int, Name Varchar(10))
As
Begin
Insert @Tree Select ID, fatherID, Name From A Where fatherID = @ID
While @@Rowcount > 0
Insert @Tree Select A.ID, A.fatherID, A.Name From A A Inner Join @Tree B
On A.fatherID = B.ID And A.ID Not In (Select ID From @Tree)
Return
End
GO
//取父节点
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER Function [dbo].[GetParent](@ID Int)
Returns @Tree Table (ID Int, fatherID Int, NameVar Varchar(10))
As
Begin
Insert @Tree Select ID, fatherID, NameVar From A Where ID = @ID
While @@Rowcount > 0
Insert @Tree Select A.ID, A.fatherID, A.NameVar From A A Inner Join
@Tree B On A.ID = B.fatherID And A.ID Not In (Select ID From @Tree)
Return
End
--測試
Select * From dbo.GetChildren(1)
Select * From dbo.GetParent(9)
GO
相关文章推荐
- 数据库 SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点
- SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点(转)
- SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点(转)
- SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点(转)
- SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点
- SQL 遍历父子关系表(二叉树)获得所有子节点
- sql 遍历二叉树所有子节点
- 现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度
- Oracle与SQL-Server数据库SQL"树查询"对比[按照父子节点关系递归拼接]
- 今天开始学Java 现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度
- SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数
- SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数
- c++现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度
- SQL 遍历父子关系表(二叉树)
- SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数
- 获得数据库名称///////查询数据库里所有表的sql语句!
- 如何获得数据库里所有表的名字(SQL+C#)
- sql通过游标遍历某个数据库中所有的表,按某种需求筛选出对应的记录
- 遍历n个节点能够形成的所有二叉树
- 如何获得数据库里所有表的名字(SQL+C#)