在sqlserver中实现树形结构中根、子节点数据的添加、修改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在sqlserver中实现树形结构中根、子节点数据的添加、修改相关的知识,希望对你有一定的参考价值。

数据库的表如下:parentId=0的是根节点,对应它下面的是子节点
menuId menuName parentId
1 用户管理 0
2 查询用户 1
3 访问统计 1
4 管理员管理 0
5 添加管理员 4
6 权限管理 4
怎么实现根、子节点数据的添加、修改操作(代码),以及操作
后根、子节点对应的menuId parentId 的变化。
非常急,谁能帮我解决下,非常感谢。

参考技术A 这个很好实现!就是添加和修改操作:
增加节点:首先要获取(在修改页面)或指定(在sql语句中)parentid的值,然后插入数据就可以啊!
修改节点:可以根据menuid,修改节点的menuName或者parentid或者是同时修改它们俩。

有问题请留言!

sqlserver查询树形结构的所有子节点

如题一张表
id name pid
----------- ---------- -----------
1 电器 NULL
2 家电 1
3 冰箱 2
4 洗衣机 2
5 电脑 1
6 笔记本 5
7 平板 5
8 组装机 7
9 品牌机 7
--查询电脑的所有子节点
刚刚学数据库,遇到问题不是很懂,这个还只是查询两层,那涉及更多层次怎么办!谢谢
不要粘贴复制啊!我想说的针对我这长表,还有以后扩展到无限分级后,怎么查询所有子节点

用标准sql的with实现递归查询(sql2005以上肯定支持,sql2000不清楚是否支持):

with subqry(id,name,pid) as (
select id,name,pid from test1 where id = 5
union all
select test1.id,test1.name,test1.pid from test1,subqry
where test1.pid = subqry.id
)
select * from subqry;
参考技术A select * from tablename where pid=@pid 参考技术B 1 SET ANSI_NULLS ON
2 GO
3 SET QUOTED_IDENTIFIER ON
4 GO
5
6 CREATE FUNCTION [dbo].[fn_GetSubCasNoTree](@CAS_NO VARCHAR(20))
7 RETURNS @CAS TABLE
8 (
9 CAS_NO VARCHAR(20) COLLATE DATABASE_DEFAULT,这个不加SQL2000会报错。
10 LEVEL INT
11 )
12
13 AS
14 BEGIN
15 DECLARE @LEVEL int
16 SET @LEVEL = 1
17 INSERT INTO @CAS SELECT @CAS_NO , @LEVEL
18 WHILE @@ROWCOUNT > 0
19 BEGIN
20 SET @LEVEL = @LEVEL + 1
21 INSERT INTO @CAS SELECT A.CAS_NO , @LEVEL
22 FROM CASN A , @CAS B
23 WHERE A.UP = B.CAS_NO and B.LEVEL = @LEVEL - 1
24 END
25 RETURN
26 END

以上是关于在sqlserver中实现树形结构中根、子节点数据的添加、修改的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver查询指定树形结构的所有子节点

sqlserver查询指定树形结构的所有子节点

MYSQL 查询树形结构数据,查询某个节点下的所有子节点数据。

SqlServer :实现树形结构递归查询(无限极分类)

怎样在 mysql 表中存储树形结构数据

MySQL实现递归查找树形结构