标题:[挑战高手]在有父子关系数据库中找出某位的所有子级记录
只看楼主
test12345
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-12-22
 问题点数:0 回复次数:9 
[挑战高手]在有父子关系数据库中找出某位的所有子级记录

一个数据库"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编程实现?
数据量比较大,至少万级的,一定要考虑运行速度的问题。

搜索更多相关主题的帖子: 关系数据库 父子 QAC 
2005-12-22 09:50
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
得分:0 
一次性全部查询出来?
什么数据库?

天津网站建设 http://www./
2005-12-22 10:42
test12345
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-12-22
得分:0 

用的是ACCESS数据库,希望帮提供完整的代码,谢谢。
同时能提供用MYSQL数据库的代码,将感激不尽。

2005-12-22 11:16
dzt0001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1281
专家分:4998
注 册:2005-10-12
得分:0 
找到一个
无限级分类
比较简单的一个页面,类似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下测试通过

----我怎能在别人的苦难面前转过脸去----
2005-12-22 11:59
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
得分:0 
你大概说说你的目的是什么吗?做什么东西?

天津网站建设 http://www./
2005-12-22 12:15
test12345
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-12-22
得分:0 

谢谢楼上两位的回复,dzt0001朋友的正在学习中。

回griefforyou版主:比如用于某企业对经销商、分销商、销售点的管理,其中就要用到1楼所提到的问题,要用网页的形式实现,输入一个编号,要找出他下面7级以内的所有的子孙级记录,找到以后分页显示结果。

2005-12-22 21:11
icecool
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:20
帖 子:1214
专家分:1366
注 册:2005-3-14
得分:0 

strid=request.form("id")
set rs=conn.execute("select id1,id2 from qac where id2 = strid")


http://toorup.3v.do
loading...
2005-12-22 21:42
test12345
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-12-22
得分:0 

7楼的只能找到第一层子记录,每个第一层子记录下还有子记录,以此类推

请大家参看http://3112.uuclubs.com/blog/555080192/32744.htm,在数据库中存储层次数据,如何找出某个节点下面的所有层次的节点,用ASP编程,用网页显示结果。

2005-12-22 22:05
test12345
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-12-22
得分:0 

在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)

2005-12-22 22:08
test12345
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-12-22
得分:0 

再也没人帮?

2005-12-24 00:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-39401-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123152 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved