给父母的条件下生孩子的观点

问题描述

我有一张表,上面有父母和孩子的数据。

Parent | Child
---------------
  A      B
  B      C
  C      D

当我将父项的条件放在哪里时,我想从该表中获取所有子项。

ex-

select * from view where parent = 'A'

结果应为B,C,D。

如何编写视图以获取输出。 预先感谢。

解决方法

这里是一个选择:

SQL> with test (parent,child) as
  2    (select 'A','B' from dual union all
  3     select 'B','C' from dual union all
  4     select 'C','D' from dual
  5    )
  6  select max(ltrim(sys_connect_by_path(child,'-'),'-')) result
  7  from test
  8  connect by prior child = parent
  9  start with parent = 'A';

RESULT
---------------------------------------------------------------------------

B-C-D

SQL>
,

您可以使用Listagg和Hierarchy子句完成

SQLFiddle

SELECT LISTAGG(CHILD,',') WITHIN GROUP (ORDER BY CHILD) FROM (
SELECT CHILD FROM TABLE1 START WITH PARENT = 'A' CONNECT BY PRIOR CHILD = PARENT);