求一条涉及到自连接的表的SQL语句!
有一个自连接的表[表1]:
id name 父级ID
1 john null
2 bill null
3 tom 2
4 lily 3
5 bob null
6 heny 1
可以看的出来,这个表实际上是一个树型结构的,我想将其用asp以树状列表的形式表现出来。我期望的结果是:
___john
______heny
___bill
______tom
__________lily
___bob
无法用一条sql语句实现,应该是用“存储结构”吧,怎么实现?谢谢,请赐教!
问题点数:10、回复次数:8Top
1 楼wgsasd311(自强不息)回复于 2005-11-04 18:23:28 得分 0
10?Top
2 楼xmlscript(C++还真是个好东西)回复于 2005-11-04 18:26:07 得分 0
你说10是什么意思?是不是指我给的分儿?那是我的全部。Top
3 楼xmlscript(C++还真是个好东西)回复于 2005-11-06 09:39:17 得分 0
自己顶!Top
4 楼xmlscript(C++还真是个好东西)回复于 2005-11-08 09:49:21 得分 0
再顶~Top
5 楼xiaoyan21(明月心)回复于 2005-11-10 10:12:53 得分 0
这好像不行吧,
应试用递归来实现的,
不过可以试试 游标 !
Top
6 楼xmlscript(C++还真是个好东西)回复于 2005-11-13 09:56:29 得分 0
555~没解决,白发一贴。Top
7 楼scmail81(琳·风の狼(修罗))回复于 2005-11-13 10:50:43 得分 10
create table 表1
(
id int ,
name varchar(10),
父级ID int
)
insert 表1
select 1,'john',NUll union
select 2,'bill',NUll union
select 3,'tom',2 union
select 4,'lity',3 union
select 5,'bob',NUll union
select 6,'heny',1
CREATE PROC P_QRY
AS
DECLARE @t TABLE(id int,Parent_item varchar(100),Level int)
DECLARE @i int
DECLARE @j int
DECLARE @T1 varchar(100)
set @T1='___'
SET @i=0
INSERT @t SELECT id,@T1+name,@i from 表1 where 父级ID is null
while @@ROWCOUNT>0
begin
SET @i=@i+1
SET @j=0
while @j<@i
begin
set @T1=@T1+'___'
set @j=@j+1
end
INSERT @t SELECT A.id,@T1+A.name,@i from 表1 A,@t b where b.id=A.父级ID and b.Level=(@i-1)
end
select Parent_item from @t order by id,LevelTop
8 楼tanweibiao2000(延平)回复于 2005-11-13 18:09:41 得分 0
scmail81(freedom) 写的不够灵活。。。
如果再插入两条数据 就不行了
insert 表1
select 1,'john',NUll union
select 2,'bill',NUll union
select 3,'tom',2 union
select 4,'lity',3 union
select 5,'bob',NUll union
select 6,'heny',1 union
select 7,'aaa',4 union
select 8,'bbb',7
Top




