日期:2014-05-17  浏览次数:21079 次

是不是要用递归解决呀?我的老是出现内存不足的问题,高分求解!
有表如下:
ID     LEVEL     PID
1       0             0
2       0             0
3       1             1
4       2             3
5       3             4

该表反映出树:
1
-3
--4
---5
2

树已经显示出来.现在有一个问题.假如我把4移到2下面的,如下:
1
-3
2
-4
--5
那么跟在2后面的点也会过去,这是对的.我也实现了.但是,我实现不了的前面的LEVEL值如何更改.谢谢.
这是我的代码:
<%
sub   modi(b)
set   rsc=conn.execute( "select   *   from   product_type   where   pid= "&b& " ")
do   while   not   rsc.eof
aa=a+rsc( "level2 ")
conn.execute( "update   product_type   set   level2= ' "&a& " '   where   pid= ' "&b& " ' ")
call   modi(b)
rsc.movenext  
loop
rsc.close
set   rsc=nothing
end   sub
call   modi(ee)
%>
提示内存不足.谢谢

------解决方案--------------------
level2 是什么?你的表结构中根本没有,而且你这么嵌套循环查询,估计是递归没用好,造成死循环了
------解决方案--------------------
我提一個想法,應該不需要使用 递归

1.用一個 循环 求出這一支里所有的 ID 如上為 4,5
2.算出 level 的相差值 如上為 2-0 =2 即4的level- 2的level
3.用一個Update語句:如:Update product_type set level2=level2+2 where pid in (4,5)