首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle SQL全路径层次结构

Oracle SQL全路径层次结构
EN

Stack Overflow用户
提问于 2017-10-27 12:31:24
回答 1查看 4.6K关注 0票数 2

我正在寻找解决方案,如何选择使用sys_connect_by_path只使用完整的层次结构‘分支’。我在互联网上找到了这样的例子,但结果却缺乏我感兴趣的第二次查询。下面的例子。有人知道如何实现输出的第二种形式--跳过较短的层次结构吗?

代码语言:javascript
复制
  SQL>
    SQL> column  full_path format a40
    SQL>
    SQL> select  ename
      2  ,       connect_by_root ename            as Designer
      3  ,       sys_connect_by_path(ename,' > ') as full_path
      4  from    emp
      5  start   with job = 'Designer'
      6  connect by prior empno = mgr;

    ENAME    DESIGNER FULL_PATH
    -------- -------- ----------------------------------------
    Jane     Jane      > Jane
    Smart    Jane      > Jane > Smart
    Ana      Jane      > Jane > Smart > Ana
    Fake     Jane      > Jane > Fake
    Tom      Jane      > Jane > Fake > Tom
    Black    Black     > Black
    Jack     Black     > Black > Jack
    Wil      Black     > Black > Wil
    Mary     Black     > Black > Mary
    Take     Black     > Black > Take
    Jane     Black     > Black > Jane
    Chris    Chris     > Chris
    Mike     Chris     > Chris > Mike
    Peter    Peter     > Peter
    Jane     Peter     > Peter > Jane
    Smart    Peter     > Peter > Jane > Smart
    Ana      Peter     > Peter > Jane > Smart > Ana
    Fake     Peter     > Peter > Jane > Fake
    Tom      Peter     > Peter > Jane > Fake > Tom

    ENAME    DESIGNER FULL_PATH
    -------- -------- ----------------------------------------
    Black    Peter     > Peter > Black
    Jack     Peter     > Peter > Black > Jack
    Wil      Peter     > Peter > Black > Wil
    Mary     Peter     > Peter > Black > Mary
    Take     Peter     > Peter > Black > Take
    Jane     Peter     > Peter > Black > Jane
    Chris    Peter     > Peter > Chris
    Mike     Peter     > Peter > Chris > Mike
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-27 12:35:20

使用 pseudocolumn只筛选到层次结构树叶子上的行:

代码语言:javascript
复制
select  ename
,       connect_by_root ename            as Designer
,       sys_connect_by_path(ename,' > ') as full_path
from    emp
WHERE   CONNECT_BY_ISLEAF = 1
start   with job = 'Designer'
connect by prior empno = mgr;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46975088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档