oracle层次树项,oracle数据库层次树教程

Oracle层次树是通过Connect by [条件] Start with [条件] 来实现。这一功能非常好用,比如ERP中的BOM、HR中的组织架构,就算是这类的典型应用了。不过,Oracle EBS11i中好象没实现,BOM也没有使用树这种组件。

下面就做一个简单的MRP试算过程,来说明层次树的应用。

1.1 建一个简单BOM表。

create table hek_bom(

master_id varchar2(20),

master_name varchar2(50),

sub_id varchar(20),

sub_name varchar(20)

)

1.2 放入测试数据。

begin

insert into hek_bom values('0001','V1卡车','10001','V1发动机');

insert into hek_bom values('0001','V1卡车','10002','V1车架');

insert into hek_bom values('0001','V1卡车','10003','V1车轮');

insert into hek_bom values('0002','V2卡车','10001','V1发动机');

insert into hek_bom values('0002','V2卡车','10002','V1车轮');

insert into hek_bom values('0002','V2卡车','10004','V2车架');

insert into hek_bom values('0003','V3卡车','10004','V1发动机');

insert into hek_bom values('0004','V4卡车','10005','V2发动机');

insert into hek_bom values('10001','V1发动机','10006','V1活塞');

insert into hek_bom values('10001','V1发动机','10007','V1火花器');

insert into hek_bom values('10007','V1活塞','10008','V1橡胶片');

insert into hek_bom values('10007','V1活塞','10009','V1螺丝');

end;

1.3 查询一下明细:

select t.* from hek_bom t for update

------------------------

1 0001 V1卡车 10001 V1发动机

2 0001 V1卡车 10002 V1车架

3 0001 V1卡车 10003 V1车轮

4 0002 V2卡车 10001 V1发动机

5 0002 V2卡车 10002 V1车轮

6 0002 V2卡车 10004 V2车架

7 0003 V3卡车 10004 V1发动机

8 0004 V4卡车 10005 V2发动机

9 10001 V1发动机 10006 V1活塞

10 10001 V1发动机 10007 V1火花器

11 10006 V1活塞 10008 V1橡胶片

12 10006 V1活塞 10009 V1螺丝

1.4 问题:求V1螺丝料品有哪几层产品用到。

select level,t.* from hek_bom t connect by prior t.master_id=t.sub_id start with t.sub_id='10009'

--注意这条SQL语名的语法,connect by prior t.master_id=t.sub_id表示优先从子节点到父节点。

--start with t.sub_id='10009'相当于where t.sub_id='10009'

---------------------------------------------

1 10006 V1活塞 10009 V1螺丝

2 10001 V1发动机 10006 V1活塞

3 0001 V1卡车 10001 V1发动机

4 0002 V2卡车 10001 V1发动机

1.5 问题:求:V1卡车的BOM结构:

select level,t.* from hek_bom t connect by prior t.sub_id=t.master_id start with t.master_name='V1卡车'

--connect by prior t.sub_id=t.master_id表示优先从父节点查询到子节点。

---------------------------------------------------------------------------------------------

1 0001 V1卡车 10001 V1发动机

2 10001 V1发动机 10006 V1活塞

3 10006 V1活塞 10008 V1橡胶片

4 10006 V1活塞 10009 V1螺丝

5 10001 V1发动机 10007 V1火花器

6 0001 V1卡车 10002 V1车架

7 0001 V1卡车 10003 V1车轮

通过这两个例子,已经可以很形象地说明connect by 的典型应用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值