首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

!表中父子字段显示

2012-01-21 
求助!表中父子字段显示现有一企业列表t_ent_list(ent_id,ent_par_id,ent_name)企业ID,该企业的上级ID,企业

求助!表中父子字段显示
现有一企业列表t_ent_list(ent_id,ent_par_id,ent_name)
企业ID,该企业的上级ID,企业的名称.


现有数据如下:
ent_id             ent_par_id     ent_name

1                       0                       系统
2                       1                       测试
3                       1                       温州电信
4                       1                       增值业务部
5                       1                       定制类管理企业
6                       2                       test
7                       3                       测试子企业2

id为6的企业是id为2的子企业,
我现在要以所属父子关系的方式来列出查询结果,即:

ent_id             ent_par_id     ent_name

1                       0                       系统
2                       1                       测试
6                       2                       test
3                       1                       温州电信
7                       3                       测试子企业2
4                       1                       增值业务部
5                       1                       定制类管理企业


全部家档求高手帮忙,急急急!


[解决办法]
DECLARE @t TABLE(ent_id varchar(10),ent_par_id varchar(10), ent_name nvarchar(100))
INSERT @t SELECT '1 ', '0 ',N '系统 '
UNION ALL SELECT '2 ', '1 ',N '测试 '
UNION ALL SELECT '3 ', '1 ',N '温州电信 '
UNION ALL SELECT '4 ', '1 ',N '增值业务部 '
UNION ALL SELECT '5 ', '1 ',N '定制类管理企业 '
UNION ALL SELECT '6 ', '2 ',N ' test '
UNION ALL SELECT '7 ', '3 ',N '测试子企业2 '

DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
DECLARE @Level int
SET @Level=0
INSERT @t_Level SELECT ent_id,@Level,ent_id
FROM @t
WHERE ent_par_id =0
WHILE @@ROWCOUNT> 0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ent_id,@Level,b.Sort+a.ent_id


FROM @t a,@t_Level b
WHERE a.ent_par_id=b.ID
AND b.Level=@Level-1
END

SELECT a.ent_id,a.ent_par_id,a.ent_name
FROM @t a,@t_Level b
WHERE a.ent_id=b.ID
ORDER BY b.Sort

------------------------

ent_id ent_par_id ent_name
---------- ---------- ----------------------------------------------------------------
1 0 系统
2 1 测试
6 2 test
3 1 温州电信
7 3 测试子企业2
4 1 增值业务部
5 1 定制类管理企业

热点排行