民间,
有人可以帮我解释下面的问题吗?
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;
答案 0 :(得分:2)
这用于获取分层数据,类似于父母 - 孩子 - 孩子的孩子等。
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