oracle数据库在树表结构中sql语句的编写和应用

oracle数据库在树表结构中sql语句的编写和应用

1、查找树中的所有顶级父节点(辈份最长的人)。
select * from tableName where upper_group_id is null;
2、查找一个节点的直属子节点(所有儿子)。
select * from tableName where upper_group_id = ‘字段值’;
3、查找一个节点的所有直属子节点(所有后代)。
select *
from tableName
start with party_id = ‘字段值’
connect by prior party_id = upper_group_id;
4、查找一个节点的直属父节点(父亲)。 如果查找的是节点的直属父节点,也是不用用到树型查询的。c->child, p->parent。
select c.party_id,
c.group_name,
p.party_id parent_id,
p.group_name parent_title
from tableName c, tableName p
where c.upper_group_id = p.party_id
and c.party_id = ‘字段值’;
5、查找一个节点的所有直属父节点(祖宗)。
select *
from tableName m
start with m.party_id = ‘字段值’
connect by prior m.upper_group_id = m.party_id;
6、查询一个节点的兄弟节点(亲兄弟)。m.parent=m2.parent->同一个父亲
select *
from tableName m
where exists (select *
from tableName m2
where m2.upper_group_id = m.upper_group_id
and m2.party_id = ‘字段值’);
7、查询与一个节点同级的节点(族兄弟)。
如果在表中设置了级别的字段,那么在做这类查询时会很轻松,同一级别的就是与那个节点同级的,在这里列出不使用该字段时的实现!

with tmp as
(select a.*, level leaf
from tableName a
start with a.party_id = ‘字段值’
connect by a.upper_group_id = prior a.party_id)
select *
from tmp
where leaf = (select leaf from tmp where party_id = ‘字段值’);
8、查询所在树节点的完整路径,从树的根节点到当前节点路径
select sys_connect_by_path(group_name, ‘/’)
from tableName t
where party_id = ‘字段值1’
start with party_id = ‘字段值2’
connect by prior party_id = upper_group_id;
从当前节点到树的根节点路径
select sys_connect_by_path(group_name, ‘/’)
from tableName t
where upper_group_id = 1
start with party_id = ‘字段值’
connect by prior upper_group_id = party_id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值