在Oracle 10g中查找任何级别父级的最精细级别

时间:2015-12-18 09:49:47

标签: sql oracle oracle10g

我的表结构是

 | Parent ID   |  ID         |
 |-------------|-------------|
 |      a      |     b       |
 |      b      |     c       |
 |      b      |     d       |
 |      b      |     e       |
 |      c      |     f       |
 |      d      |     g       |
 |      e      |     h       |

我想获得所有父节点的最多子节点。 在另一张表中,我有a,b和c。然后我想得到以下结果。

 |  Parent_ID  |  Child      |
 |-------------|-------------|
 |      a      |     f       |
 |      a      |     g       |
 |      a      |     h       |
 |      b      |     f       |
 |      b      |     g       |
 |      b      |     h       |
 |      c      |     f       |

f,g,h是最低的颗粒。

1 个答案:

答案 0 :(得分:0)

首先,您应确保使用Oracle vision 10g或更高版本,然后使用connect_by_isleaf,您可以尝试了解有关connect_by的更多信息

select connect_by_root a.id as id,a.parent_did
  from table1 a inner join table2 b on a.id=b.id 
   where connect_by_isleaf = '1'
   CONNECT BY PRIOR a.parent_did = a.id;