树形结构数据自定义的递归查询

用一个例子给CSDN里提问的朋友,解答一下树形结构的其他数据库的实现

 

数据就比如是Oracle里面的实例方案,employees表。 


Oracle里是这样写: 
select * from employees 
start with employee_id=176 connect by prior manager_id=employee_id; 



不过这个是Oracle数据库里实现的。如果我要查询一个节点的所有祖先(上级)节点,自定义一个递归查询应该怎么写?因为考虑到以后要移植。 

 

如果你的表设计的不错的话, 由孩子找所有的父记录也是可以做到的。 

比如我们现在在表里的设计加上了一个pathinfo, 或者叫hierarchy的字段这个字段是表示这个节点的路径的 

比如TableA 

id pid pathinfo 
1 1 
2 1 1,2 
3 2 1,2,3 
4 2 1,2,4 
5 3 1,2,3,5 

这里可以用类似 
select a2.id from tablea a1, tablea a2 where instr(a1.pathinfo||',', a2.id||',', 1, 1) > 0 
来查到所有的父亲,不过这里instr也不是标准的sql,不同的数据库instr可能是不一样的名字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值