标题: [挑战高手]在有父子关系数据库中找出某位的所有子级记录 [打印本页] 作者: 风化雪夜 时间: 2010-1-14 02:16 标题: [挑战高手]在有父子关系数据库中找出某位的所有子级记录 一个数据库"ABS.mdb"中有一个数据表"QAC",有下列字段和记录:
ID ID1 ID2 姓名 电话
100249 100021 100021
100366 100021 100021
102132 100021 100366
101151 100021 100021
103031 101151 101151
102002 100021 100366
102312 102002 102002
101024 100021 100021
105011 101151 103209
103426 101151 103031
104408 101151 103426
102818 100021 101024
103513 100021 101024
103328 103513 103513
102022 100021 103031
103209 101151 103031
110302 101151 103426
109329 101151 103031
110038 101151 103031
103304 101151 101151
120034 101151 103304
ID2是编号为ID的父级编号
问题:给出一个编号,要找出他下面7级以内的所有的子孙级记录,如何用ASP编程实现?
数据量比较大,至少万级的,一定要考虑运行速度的问题。作者: ╰☆惢棂擱淺 时间: 2010-1-14 02:16
一次性全部查询出来?
什么数据库?作者: づ嗳嘚亽鈊↑ 时间: 2010-1-14 02:16
用的是ACCESS数据库,希望帮提供完整的代码,谢谢。
同时能提供用MYSQL数据库的代码,将感激不尽。作者: 听雨飞扬 时间: 2010-1-14 02:16
找到一个
无限级分类
比较简单的一个页面,类似csdn论坛在ns下的左边列表
描述:
1.
数据名:tree.mdb
表名:tree
表结构:id(自编) pid(数字) content(文本) link(文本)
2.
图片:endnode.gif collapsed.gif back.gif(均在img目录下,可自行修改)
3.
代码:
<!--#include file="conn.inc"-->
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">
<TITLE>无限级列表</TITLE>
<!--
by fason(2003-5-12)
-->
<style>
.node{
font-size:12px;
padding:0 0 2 0;
margin-left:10;
height:22px;
}
img{
vertical-align:middle;
width:11px;
height:11px;
}
a{text-decoration:none;font-size:12px;color:black}
.deeptree{
width:100%;
height:100%;
backgound-color:#f2f2f2;
overflow:auto;
}
</style>
</HEAD>
<BODY bgcolor=#f2f2f2>
<nobr>
<div class="deeptree">
<%
newid=Request.QueryString("id")
if newid="" or CInt(newid)<0 then newid=0
if isNumeric(newid) then
listTree(CInt(newid))
end if
function listTree(id)
dim rs
dim imgFolder,imgFile
dim link,href,parentHref
dim target,ahref,click
target="main" ’所指定的框架名
imgFolder="img/" ’默认路径
set rs=conn.execute("select *,(select count(*) from tree where pid = T.id) as children,(select pid from tree where id="&id&") as parent from tree T where pid="&id)
if not rs.eof then
parentHref=Request.ServerVariables("URL")&"?id="&rs("parent")
if id<>0 then Response.Write "<div class=’node’ nowrap=true><a href=’"&parentHref&"’ onfocus=’blur()’><img src="/Files/BeyondPic/chinazcj/2005-11/19/05111900471259510.gif"’ border=0></a> <a href=’"&parentHref&"’>上一级目录</a></div>"&VbCrLf
do while not rs.eof
if rs("children")>0 then
img=imgFolder+"collapsed.gif"
href=Request.ServerVariables("URL")&"?id="&rs("id")
click="onclick=""location.href=’"&href&"’"""
else
img=imgFolder+"endnode.gif"
href="javascript:void(0)"
end if
if not isNull(rs("link")) then
ahref=rs("link")
else
ahref="javascript:void(0)"
target="_self"
end if
link="<a href=’"&ahref&"’ target=’"&target&"’ title=’"&rs("content")&"’ "&click&">"&rs("content")&"</a>"
Response.Write "<div class=’node’ nowrap=true><a href=’"&href&"’ onfocus=’blur()’><img src=’"&img&"’ border=0></a> "&link&"</div>"
rs.movenext
loop
rs.close:set rs=nothing
end if
end function
conn.close:set conn=nothing
%>
</div>
</nobr>
</BODY>
</HTML>
conn.inc:
<%
dim conn
set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("tree.mdb") & ";Persist Security Info=False"
%>
4.测试:ie6,ns7,mozilla下测试通过作者: FIFA2007 时间: 2010-1-14 02:16
你大概说说你的目的是什么吗?做什么东西?作者: 丑剑客 时间: 2010-1-14 02:16
谢谢楼上两位的回复,dzt0001朋友的正在学习中。
回griefforyou版主:比如用于某企业对经销商、分销商、销售点的管理,其中就要用到1楼所提到的问题,要用网页的形式实现,输入一个编号,要找出他下面7级以内的所有的子孙级记录,找到以后分页显示结果。作者: 千年@之恋 时间: 2010-1-14 02:16
strid=request.form("id")
set rs=conn.execute("select id1,id2 from qac where id2 = strid")作者: 释放压力 时间: 2010-1-14 02:16
7楼的只能找到第一层子记录,每个第一层子记录下还有子记录,以此类推
请大家参看http://3112.uuclubs.com/blog/555080192/32744.htm,在数据库中存储层次数据,如何找出某个节点下面的所有层次的节点,用ASP编程,用网页显示结果。作者: 依依 时间: 2010-1-14 02:16
在4楼的代码中,下面这行没看明白,请帮忙解释一下,谢谢!
set rs=conn.execute("select *,(select count(*) from tree where pid = T.id) as children,(select pid from tree where id="&id&") as parent from tree T where pid="&id)作者: ぱホ 时间: 2010-1-14 02:16
再也没人帮?作者: 日月明 时间: 2010-2-6 09:05
不要见一个爱一个,爱的太多,你的爱就要贬值。