我有一张包含父母,子女关系的表格。在另一个表中,我有一个成员列表,它们是第一个表中的叶子。我想要做的是让第一个表由成员过滤,这些成员是第二个表中成员的父成员,或者是第二个表的成员。我希望我的问题很清楚,如果不是,请问。
数据库是Oracle 10g。
答案 0 :(得分:2)
我们假设您在表TH
和成员表TM
中有此层次结构,有三行' GC Carl' PT Mike&# 39;,' PT Mary' (标记为绿色)。
要找到他们所有的父母,祖父母等(标记为黄色),您需要这个简单的分层查询:
select distinct id
from th
connect by id = prior pid
start with id in (select id from tm)
如果您只是寻找父母,而您需要以分层方式进行,那么:
select distinct id
from th
connect by id = prior pid and level <= 2
start with id in (select id from tm)
(马丁被淘汰,因为他不是任何成员的父母而且他在TM
缺席。)
如果这不是你想要的,你绝对应该精确查询,添加样本输入数据和所需的输出。