当前位置:asp编程网>技术教程>Database教程>  正文

更换无限级分类表结构方法

1970-01-01 08:00:00   来源:www.aspprogram.cn    作者:wangsdong   浏览量:2212   收藏

无限级分类的问题
最近遇到这样的问题:一个无限级分类表pclass的结构如下
ID cname(分类名称) parentid(父ID)
1   A               0
2   B               0
3   a               1
4   01              3
5   b               2
6   02              3
在显示的时候,我使用了递归将分类名称显示出来的,现在发现这样非常影响页面打开速度,经过在群中讨论,决定将改成这样的结构
ID cname(分类名称) parentid(父ID)path
1   A               0               0
2   B               0               0
3   a               1              0,1
4   01              3              0,1,3
5   b               2              0,2
6   02              3              0,1,3 
就是在原来的基础上增加一下path字段,根据原来的结构,使用sql语句,将path赋值。以后使用的时候就方便了,直接使用select * from pclass where id in(path),下面直接使用循环,输出就行了。


'无限级分类表的结构转换
'来源:www.aspprogram.cn
'整理:wangsdong
'原创文章,转载请保留此信息

感谢guguda2008提供的方法,我放到这里与大家共享,希望能帮助到需要的朋友
WITH MU AS (
SELECT ID,CNAME,PARENTID,CONVERT(VARCHAR(MAX),'0') AS [PATH] FROM pclass WHERE PARENTID=0
UNION ALL
SELECT
T1.ID,T1.CNAME,T1.PARENTID,T2.[PATH]+','+LTRIM(T2.ID)
FROM pclass T1
INNER JOIN MU T2 ON T1.PARENTID=T2.ID
)
UPDATE PCLASS SET PATH=(SELECT PATH FROM MU WHERE MU.ID=PCLASS.ID)

注意一下:这个sql语句只能在sql server,oracle数据库上运行,不能在access上运行。



关于我们-广告合作-联系我们-积分规则-网站地图

Copyright(C)2013-2017版权所属asp编程网