100分求助,一个推算下级分类ID的问题

数据库(ACCESS)
表class,
id是类别ID(自动编号),pid是上级分类的ID,cid是下级分类的ID(第一层,不含下下级),className是类名

id pid cid className
1 0 2 分类名1
2 1 3 分类名2
3 2 4,5 分类名3
4 3 分类名4
5 3 分类名5
.....
.....

该如何算出每个分类下的所有下级分类(包含下下级)的ID???

比如查询条件是ID=1
要求查出结果是1,2,3,4,5....

查询条件为ID=2时
结果是2,3,4,5....

这是一个无限下级分类的数据结构.100分求助!!!
---------------------------------------------------------------

access,偶隻能UP一下了
---------------------------------------------------------------

没看懂你说什么,也只能UP了!
---------------------------------------------------------------

用个递规算法就可以了

就像我这棵树:
http://www.xadj.gov.cn/tree/news_sort.asp?ver=cn
---------------------------------------------------------------

??
select * from table1 where id>=n
---------------------------------------------------------------

建议:其实只要一个父ID即可,无需子ID,

id pid className
1 0 分类名1
2 1 分类名2
3 2 分类名3
4 3 分类名4
5 3 分类名5

用递归可以求得:包含下级的所有ID

'取得包含下级所有ID的递归函数
function getid(tempid)

set rst=server.createobject("adodb.recordset")
rst.open "select UID from SysUser where PID="&tempid&" ",conn,1,1

while not rst.eof
Response.write rst("UID")
getid(rst("UID"))
rst.movenext
wend

rst.close
set rst=nothing

end function

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

rst.open "select CID from SysUser where PID in "&tempid&" ",conn,1,1

不就行了

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

sub addson(parentid,level)
set rsson=Server.CreateObject("adodb.recordset")
rsson.Open "select * from type where typeparent=" & parentid & " order by typeorder",conn,3,1
do while not rsson.EOF
call addson(rsson("typeid"),level+1)
rsson.MoveNext
loop
end sub
'level 表示第几层

Published At
Categories with Web编程
Tagged with
comments powered by Disqus