【发布时间】:2016-01-04 09:23:11
【问题描述】:
我在搜索父或子帐户时遇到了分层查询,通常让我们假设一个示例:
表帐户:
Account Parent
217518 217518 or null
304229 217518
424590 217518
378327 217518
491504 378327
234123 491504
所以层次结构看起来:
现在,我得到了表格“SHOW_PARENT_CHILD_ACC”,我将在其中插入我想显示的帐户。 (我需要在分层查询中使用它)
插入 Show_parent_child_acc(acc) 值 (304229)。
查询应返回所有帐户 ID,因此:
304229
424590
378327
217518
491504
234123
我会的时候也一样 插入 show_parent_cild_acc(acc) 值 (234123)
查询应返回所有帐户 ID,因此:
304229
424590
378327
217518
491504
234123
换句话说,无论我将哪个帐户(父母/孩子或孩子的孩子)插入到 show_parent_child_acc 表中。查询应该返回整个帐户层次结构
现在我有类似的东西:
WITH acc_to_delete( ID ) AS (
select case when parentaccount is null then accountid else parentaccount end from account where accountid in
(select acc from show_parent_child_acc)
)
SELECT accountid id_acc,case when parentaccount is null then accountid else parentaccount end parentaccount
FROM account p
START WITH
EXISTS( SELECT 'X'
FROM acc_to_delete w
WHERE p.accountid = w.ID
)
CONNECT BY accountid = PRIOR parentaccount
union
SELECT accountid id_acc,case when parentaccount is null then accountid else parentaccount end parentaccount
FROM account p
START WITH
EXISTS( SELECT 'X'
FROM acc_to_delete w
WHERE p.accountid = w.ID
)
CONNECT BY PRIOR accountid = parentaccount
但它没有按预期工作(它在我放入 SHOW_PARENT_CHILD_ACC 的地方工作正常:217518..)
【问题讨论】: