有张记录有层级关系的表(CHILD_ID 主键,PARENT_ID可以为空)
(为了便于观看,数据记录我用字符表示,实际上都是number型的)
CHILD_ID PARENT_ID
A
A1 A
A2 A
A3 A
A21 A2
A22 A2
A31 A3
A211 A21
.
.
.
问题是,我给出两个ID如何快速的判定他们是否存在这种父子关系
比如,A1和A2就没有这种关系,而A211和A则有这种父子关系(这里的父子关系确切的说是只要这两个ID有继承关系就是父子关系)
在线等待......
(为了便于观看,数据记录我用字符表示,实际上都是number型的)
CHILD_ID PARENT_ID
A
A1 A
A2 A
A3 A
A21 A2
A22 A2
A31 A3
A211 A21
.
.
.
问题是,我给出两个ID如何快速的判定他们是否存在这种父子关系
比如,A1和A2就没有这种关系,而A211和A则有这种父子关系(这里的父子关系确切的说是只要这两个ID有继承关系就是父子关系)
在线等待......
可以得到是否有父子关系
你的方法似乎不能满足要求,这样只可求得A3的层级关系,如果要判断另一个值(比如A21)和A3是否有层级关系的话,还要在你所做的查询中做一次查询,看PARENT_ID是否有等于A21的,这样对于大量操作的话,是很影响性能的
where child_id = 'A211'
start with parent_id='A'
connect by prior child_id = parent_id