ITPub博客

首页 > 数据库 > Oracle > 由父子关系表得到所有的谱系关系?

由父子关系表得到所有的谱系关系?

原创 Oracle 作者:fishforwater 时间:2007-01-16 11:52:58 0 删除 编辑

可以增加over和connect by prior 的应用技巧

[@more@]

一个很棘手的问题,
有一张表是描述父子关系的,例如:

id, parentid 数据有
--------------------------------
a, b
b, c
c, d

现在需求是由这个父子关系得到祖先的层次关系,即把这个内容的父亲,爷爷,…… 都要找出来.

也就是上面的数据必须得到如下的数据:

id, ancestorid
-----------------------
a, b
a, c
b, c
a, d
b, d
c, d

SQL> create table t(id varchar2(1),parentid varchar2(1));SQL> insert into t values('a','b');SQL> insert into t values('b','c');SQL> insert into t values('c','d');SQL> select first_value(id) over (partition by rownum - level order by level) id, parentid from t connect by prior parentid = id;ID PAa b
a c
a d
b c
b d
c d

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8643300/viewspace-890730/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    18
  • 访问量
    16902