从oracle层次查询中找到缺少的父级

时间:2014-04-04 06:06:12

标签: sql oracle

我有一个父/子关系的表。如何找到失踪的父母?

分层表:

child          parent
2000698835     2001455376

如果客户表中没有父项,我需要插入它。在这里如何在customer表中找到缺少的父项?

select * from customer where true_gcdb_source_key='2001455376'(which is the parent)

获取所有孩子父母的查询 从sap_cust_rel_init中选择* 从child_gcdb_id =' 2002615591'开始 通过child_gcdb_id =之前的parent_gcdb_id

连接
child_gcdb_id parent_gcdb_id
2002615591  2002554170
2002554170  2002554286
2002554286  2002554081
2002554081  
2002554081  
2002554081  
2002554286  2002554081
2002554081  
2002554081  
2002554081  
2002554286  2002554081
2002554081  
2002554081  
2002554081  
2002554170  2002554286
2002554286  2002554081
2002554081  
2002554081  
2002554081  
2002554286  2002554081
2002554081  
2002554081  
2002554081  
2002554286  2002554081
2002554081  
2002554081  
2002554081  
2002554170  2002554286
2002554286  2002554081
2002554081  
2002554081  
2002554081  
2002554286  2002554081
2002554081  
2002554081  
2002554081  
2002554286  2002554081

这用于获得该孩子的所有父母

如果客户表中没有任何父母,我需要插入

1 个答案:

答案 0 :(得分:0)

这里不需要分层查询,一个简单的SQL查询就可以了:

select c1.true_gcdb_target_key, c1.true_gcdb_source_key 
from customer c1
where not exists
(
  select 1
  from customer c2
  where c2.true_gcdb_target_key = c1.true_gcdb_source_key
);

我认为你的孩子字段是true_gcdb_target_key。我只搜索不作为子ID出现的父ID。分层查询仅在您希望行之间的层次结构关系时使用,包括层次结构级别,路径,根...此处您的表已包含父级和子级信息。