
正文
sqlServer遍历树,sql二叉树遍历
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
sqlserver遍历树形目录
使用sqlserver递推查询,可以直接查询出来。
参考资料:
WITH lmenu(nav_id,nav_name,nav_parentid,level) as
(
SELECT nav_id,nav_name,nav_parentid,0 level FROM nav nav_parentid=0
UNION ALL
SELECT A.nav_id, A.nav_name,a.nav_parentid, b.level+1 FROM gs_nav A,lmenu b where a.nav_parentid= b.nav_id and nav_id = 10
)
SELECT * from lmenu
具体SQL语句还需要自己验证一下,上面的自己看着乱写的。
相关问答
Q1: sqlserver 存储二叉树
看看数据表结构
表:Tree
current_id int (当前节点编号)
father_id int (父节点编号,如果是根节点,-1)
left_id int (左节点编号)
right_id int (右节点编号)
表:Node
Node_id int PK
Node_vaule nvarchar(100)
说明:Tree表是用来存储树型结构的,Node表是用来存储节点内容的
其中Tree表的current_id与Node表的Node_id是一一对应的
至于遍历的存储过程是要完成什么功能呢?
Q2: SQLserver 树类型,遍历问题,谢谢
Create Table Tb
(
Pid Varchar(50),
CEID Varchar(50),
Level int,
Ccode Varchar(50),
pCode Varchar(50)
)
Insert Into TB Values('','1',0,'产品1','')
Insert Into TB Values('1','2',1,'Test1','产品1')
Insert Into TB Values('1','3',1,'Test2','产品1')
Insert Into TB Values('2','4',2,'Test11','Test1')
Insert Into TB Values('2','5',2,'Test12','Test1')
Insert Into TB Values('3','6',2,'Test21','Test2')
Insert Into TB Values('3','7',2,'Test22','Test2')
Insert Into TB Values('6','8',3,'Test211','Test21')
Insert Into TB Values('6','9',3,'Test212','Test21')
Insert Into TB Values('6','10',3,'Test213','Test21')
With T
As
(
Select Pid,CEID,Ccode,Level,Convert(Varchar(4000),CEID) As Path From TB Where Pid=''
Union All
Select TB.Pid,TB.CEID,TB.Ccode,TB.Level,Convert(Varchar(4000),T.Path+'-'+TB.CEID) From TB inner join T On TB.Pid=T.CEID
)
Select replicate(' ',level)+Ccode As Ccode From T
Order By Path






