【问题标题】:Please explain me the query attached请解释我所附的查询
【发布时间】:2014-08-07 01:15:29
【问题描述】:

伙计们,

有人可以帮我解释一下下面的查询吗?

 SELECT   SOME_ID ROOT_CAT,
          CHILD_ID SOME_ID
 FROM    CHILD_TABLE
 START WITH SOME_ID IN (SELECT ROOT_ID FROM ROOT_TABLE)
 CONNECT BY NOCYCLE SOME_ID = PRIOR CHILD_ID;

【问题讨论】:

标签: sql oracle oracle11g oracle-sqldeveloper plsqldeveloper


【解决方案1】:

这用于获取分层数据,例如 Parent - Child - Child of child 等。

start with -- 标识树中的所有 LEVEL=1 节点
connect by -- 描述如何从上面的父节点走到它们的子节点和 他们孩子的孩子。

一般语法是

select ... 
start with initial-condition 
connect by nocycle 
recurse-condition

connect by 构造建立递归。通过 SOME_ID= CHILD_ID 可以找到属于下一个较低层级的所有记录。

CHILD_ID 是在当前层级中找到的值

您的查询可以类似于:

 SELECT   SOME_ID ROOT_CAT,
          CHILD_ID SOME_ID
 FROM    CHILD_TABLE
 START WITH SOME_ID IN (SELECT ROOT_ID FROM ROOT_TABLE)
 CONNECT BY NOCYCLE SOME_ID = PRIOR CHILD_ID;

 SELECT  PARENT_ID  CURRENT_PARENT,
         CHILD_ID   PARENT_ID_CURRENT_CHILD
 FROM LIST_OF_CHILDREN
 START WITH PARENT_ID IN ( SELECT SOME_RANDOM_PARENT_ID FROM LIST_OF_PARENTS)
 CONNECT BY NOCYCLE  PARENT_ID = PRIOR CHILD_ID

【讨论】:

  • 非常感谢,Nishanthi
  • 不幸的是,由于我的声誉不允许我这样做,我无法进行投票。
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 2016-10-03
相关资源
最近更新 更多