sql 知道父节点,查询所有的子节点,运用游标,递归,存储过程

表tmbmBPRODchar(15)老爸BMWHSchar(2)厂号BMBOMMchar(2)methodBSEQdecimal(3,0)序号BCHLDchar(15)儿... 表tmbm

BPROD char(15) 老爸
BMWHS char(2) 厂号
BMBOMM char(2) method
BSEQ decimal(3, 0) 序号
BCHLD char(15) 儿子
BQREQ decimal(15, 6) 用量
BDEFF decimal(8, 0) 开始生效日期
BDDIS decimal(8, 0) 失效日期
BMSCP decimal(5, 4) 报废率
BBUBB decimal(3, 0) bubb
展开
 我来答
rjchen00
2015-09-21 · TA获得超过157个赞
知道小有建树答主
回答量:232
采纳率:0%
帮助的人:128万
展开全部
呃,因为我不清楚你的表里,这个BPROD char(15) 老爸 里面记录的值是不是和BMWHS 对应的,所以只能说个大概。
select sys_connect_by_path(username,'>') "Path"
from tmbm
start with id=1
connect by prior id=parentid;

其中,id是你要遍历的起始点,比如你想从 厂号=XX 的这个父节点开始寻找他所有的子节点,这里就换成 start with BMWHS=XX

然后,connect by prior id=parentid,这里id=parentid,简单解释就是寻找其他记录里,parentid和我的id相同的记录,也就是找子节点。
应该是换成你的BMWHS=BPROD(我不知道你的BPROD BCHLD 和哪个属性是对应的,是BMWHS吗?)
如果是的话就是下面这样(username是你要返回的值,假设你还是要返回 BSEQ 序号)

select sys_connect_by_path(BSEQ,'>') "Path"
from tmbm
start with BMWHS=XX

connect by prior BMWHS=BPROD;
更多追问追答
追问
我想要输入老爸BPROD后,能够返回儿子BCHLD,序号BSEQ代表的是,加入一个老爸由3个儿子组成,那么三个儿子编号为1,2,3,如果儿子有多层,要返回多层数据。其他的都是tmbm表中的,只要在显示结果的时候,把表中的数据一起显示出来就行。
追答
呃,我想想怎么说,能看看你数据具体是怎样的么?
比如数据是这样的:
BPROD BSEQ BCHLD
null 1 2,3,4
1 2 5
1 3 6
1 4 null
2 5 null
3 6 null
那你是要输入序号1,然后得到所有1的儿子,2,3,4,5,6 对吗?那是不是这个BPROD 和BSEQ 一样记录的都是序号呢?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式