SQL存储过程显示树形菜单

SQL code
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER PROCEDURE [dbo].[P_DJP]
(
@deeplevel int,
@firstcode nvarchar(100),
@liqty int,
@gd nvarchar(100)

)
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN

create table #tree 
(
bomno nvarchar(100),
code nvarchar(100), 
deeplevel int, 
cbdesc nvarchar(100), 
qty_nee numeric(19,8), 
loc varchar(32),
wastage numeric(6,2),
liqty numeric(19,8),
sh numeric(19,8), 
isLeafnode int,
tree nvarchar(max) default '' 
) 
declare 
@cbdesc varchar(32), 
@QTY_NEED numeric(19,8), 
@loc varchar(32), 
@wastage numeric(6,2)

insert #tree 
select BOMT.BOMNO,BOMT.CODE,@deeplevel,BOMT.CBDESC,BOMT.QTY_NEED,MAINBOM.LOC,BOMT.WASTAGE,ceiling((@liqty+(@liqty*(WASTAGE/100)))*QTY_NEED),(WASTAGE/100),1,
BOMT.CODE + left('00000000000000000000',20-len(BOMT.CODE)) from BOMT left JOIN MAINBOM on  BOMT.CODE=MAINBOM.BOMNO where BOMT.BOMNO=@firstcode 


WHILE @@rowcount > 0 
BEGIN
    SET @deeplevel = @deeplevel + 1

    update #tree set isLeafnode= 0 from #tree 
        join BOMT
        on #tree.deeplevel=@deeplevel-1
        and BOMT.BOMNO collate database_default =#tree.code
    insert #tree 
        select @firstcode,BOMT.CODE,@deeplevel,BOMT.CBDESC,BOMT.QTY_NEED,MAINBOM.LOC,BOMT.WASTAGE,ceiling((liqty+(liqty*(WASTAGE/100)))*QTY_NEED),sh+(WASTAGE/100),1,#tree.tree+'_'+BOMT.CODE+left('00000000000000000000',20-len(BOMT.CODE)) 
        from BOMT
        join #tree
        on #tree.deeplevel=@deeplevel-1
        and BOMT.BOMNO collate database_default =#tree.code
        left join MAINBOM 
        on BOMT.CODE=MAINBOM.BOMNO
END


select space((deeplevel-1)*2)+cast(deeplevel as varchar),code,cbdesc,qty_nee,loc,sh,liqty
 from #tree 

RETURN @@ERROR END

SET NOCOUNT OFF
SET XACT_ABORT OFF

这是我的一个存储过程,但是现在有个问题就是在在显示层次的时候不是根据我需要的形式显示的。
我需要显示的是
1
 2
  3
 2
  3
  4
  3
  4
  5
  4
  5
 2 
  3
而它显示的层次关系是
1
 2
 2
  3
  3 
  3
  4
  4
  4 
  5
  5
高手望请教。
 
   

作者: zhangzhen_927116   发布时间: 2011-06-16

SQL code

1
 2
  3
 2
  3
   4
  3
   4
    5
   4
    5
 2  
  3


作者: zhangzhen_927116   发布时间: 2011-06-16

求高手。。。

作者: zhangzhen_927116   发布时间: 2011-06-16

一般树节点在数据库存储,有2种方式
一种是需要递归的:id,父id
一种是无须递归的:id,层次,在本子树里的序号
你的是哪一种?

作者: sz_haitao   发布时间: 2011-06-16

我记得上次帮你写过。。
http://topic.csdn.net/u/20110506/16/572420d1-3bc8-4e51-8aef-d29715fe09a8.html

作者: duoxu1983   发布时间: 2011-06-16

引用 3 楼 sz_haitao 的回复:
一般树节点在数据库存储,有2种方式
一种是需要递归的:id,父id
一种是无须递归的:id,层次,在本子树里的序号
你的是哪一种?

是第一种

作者: zhangzhen_927116   发布时间: 2011-06-16

引用 4 楼 duoxu1983 的回复:
我记得上次帮你写过。。
http://topic.csdn.net/u/20110506/16/572420d1-3bc8-4e51-8aef-d29715fe09a8.html

是写过但是它在显示层次的时候会有问题。就像我上面说的
1
 2
 2
  3
  3  
  3
  4
  4
  4  
  5
  5
它是这样显示的。
而我是想这样显示
1
 2
  3
 2
  3
  4
  3
  4
  5
  4
  5
 2  
  3

作者: zhangzhen_927116   发布时间: 2011-06-16

来帮帮我啊有什么方法活着办法啊

作者: zhangzhen_927116   发布时间: 2011-06-16