sql server怎么对树形结构表的节点进行拼接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server怎么对树形结构表的节点进行拼接相关的知识,希望对你有一定的参考价值。

我这个只是实现了显示最后两个节点,要怎么修改才能拼接所有的节点,是不是我里面哪里错了?
研究出来了,把cast那一行改掉就行了

参考技术A DECLARE @temp nvarchar(MAX)='',@pid bigint=3;
WHILE @pid<>0 BEGIN IF @temp=''
SELECT @temp=TypeName,@pid=ParentId
FROM [dbo].[Test]
WHERE Id=@pid;
ELSE
SELECT @temp=(TypeName+'->'+@temp),@pid=ParentId
FROM [dbo].[Test]
WHERE Id=@pid;
END;
SELECT @temp AS TypeName;
参考技术B 用标准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;

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

以上是关于sql server怎么对树形结构表的节点进行拼接的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2005实现树形菜单显示的数据库表怎么设计?

「SQL归纳」树形结构表的存储与查询功能的实现——通过路径方法(非递归)

pl/sql如何现实像sqlserver中的树形结构目录界面,就是能查看表视图那样的界面。

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

如何用Java拼接JSON方式遍历整个树形节点

java实现对树形结构(文件夹式)数据数组进行排序