繁体   English   中英

Oracle SQL中的分层查询

[英]Hierarchical Query in Oracle SQL

我有这样的数据:

数据表

从上表中,我试图使用connect by子句编写一个SQL以获取这样的层次结构

      MAINCONTENT

       SPECIAL
        RIDGE
         SALESCONTENT

       ANOTHERONE
        RODGE
         SOMETHING ELSE
          ANOTHER
        ...

到目前为止,以下SQL仅显示了我的“ MAINCONTENT”的所有子级,但我想这样做而不传递参数。 同样,下面的这个没有向我显示儿童的孩子,这意味着它没有递归。

    select DISTINCT parent from  MYTABLE
    connect by prior CHILD = PARENT
    start with PARENT = 'MAINCONTENT';

您似乎只显示电子表格中的部分数据,所以我不确定以下内容是否100%正确,但是:

首先摆脱间接链接(直接链接应覆盖整个树),并为顶级记录创建额外的条目。 然后应用分层条款。

请尝试以下方法:

WITH mytable_normalized AS (
  SELECT parent, child
    FROM mytable
   WHERE direct_link = 'Y'
   UNION ALL
  SELECT null, parent
    FROM mytable
   MINUS
  SELECT null, child
    FROM mytable
)
SELECT lpad(' ', level*2) || child
  FROM mytable_normalized
CONNECT BY prior child = parent
 START WITH parent IS NULL;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM