请问上边图中的树型列表 如何递归 形成自己的名字格式?
格式如下:
10023 桥隧涵-桥梁-桥面铺装
10024 桥隧涵-桥梁-排水系统
10025 桥隧涵-桥梁-附属设施
10026 桥隧涵-桥梁-伸缩缝
10027 桥隧涵-桥梁-翼墙锥坡
10028 桥隧涵-桥梁-墩台
10029 桥隧涵-桥梁-台帽盖梁
10030 桥隧涵-桥梁-梁式构件
10031 桥隧涵-桥梁-桥与路连接我只想得到最底层的数据,名字显示方法 如格式中的那样~!会的朋友来看看吧~!
格式如下:
10023 桥隧涵-桥梁-桥面铺装
10024 桥隧涵-桥梁-排水系统
10025 桥隧涵-桥梁-附属设施
10026 桥隧涵-桥梁-伸缩缝
10027 桥隧涵-桥梁-翼墙锥坡
10028 桥隧涵-桥梁-墩台
10029 桥隧涵-桥梁-台帽盖梁
10030 桥隧涵-桥梁-梁式构件
10031 桥隧涵-桥梁-桥与路连接我只想得到最底层的数据,名字显示方法 如格式中的那样~!会的朋友来看看吧~!
楼主登出QQ跟QQ空间再试试
--测试数据
CREATE TABLE tb(ID INT,PID int,Name nvarchar(10))
INSERT tb SELECT 1,0,N'部门1'
UNION ALL SELECT 2,0,N'部门2'
UNION ALL SELECT 3,1,N'部门1.1'
UNION ALL SELECT 4,3,N'部门1.1.1'
UNION ALL SELECT 5,4,N'部门1.1.1.1'
UNION ALL SELECT 6,2,N'部门2.1'
UNION ALL SELECT 7,6,N'部门2.1.1'
UNION ALL SELECT 8,7,N'部门2.1.1.1'
GO--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID VARCHAR(10))
RETURNS @t_Level TABLE(ID INT,Level int)
AS
BEGIN
DECLARE @Level int
DECLARE @PID INT
SELECT @ID = @ID + ',' , @Level=1
WHILE CHARINDEX(',',@ID)>0
BEGIN
SET @PID = CAST(LEFT(@ID,CHARINDEX(',',@ID)-1) AS INT) INSERT @t_Level SELECT @PID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
SET @ID = STUFF(@ID,1,CHARINDEX(',',@ID),'')
END
RETURN
END
GO--调用函数查询节点[ 1 ]及其所有子节点
SELECT a.*
FROM tb a,f_Cid('1,2') b
WHERE a.ID=b.ID
/*--结果
ID PID Name
----------- ----------- ----------
1 0 部门1
2 0 部门2
3 1 部门1.1
4 3 部门1.1.1
5 4 部门1.1.1.1
6 2 部门2.1
7 6 部门2.1.1
8 7 部门2.1.1.1(8 row(s) affected)
--*/
DROP FUNCTION F_Cid
DROP TABLE TB