1
我正在尝试编写一个分层代码,除了所有子/父帐户还会显示一个列,其中包含表TO_DELETE此帐户(子/父母)根据。 换句话说:根据表TO_DELETE中的哪个帐户显示父/子帐户?有关基于哪个值的信息的分层查询
我的代码如下:
WITH acc_to_delete(ID) AS (
select parentaccount from account where accountid in
(select accountid from to_delete)
)
SELECT accountid id_acc
FROM account p
START WITH
EXISTS(SELECT 'X'
FROM to_delete w
WHERE p.accountid = w.accountid
)
CONNECT BY accountid = PRIOR parentaccount
union
SELECT accountid id_acc
FROM account p
START WITH
EXISTS(SELECT 'X'
FROM to_delete w
WHERE p.accountid = w.accountid
)
CONNECT BY prior accountid = parentaccount
它似乎正常工作。结果我得到了一个树帐户。至少我认为:)
CREATE TABLE to_delete
(accountid number);
CREATE TABLE account
(accountid number,
parentaccount number)
所以现在当to_delete表包含数据:
3123,
3443,
5646,
7563,
3452,
2346
和帐户包含:
Accountid parentaccount
3123 5533
3443 3452
5646 4342
7563 1239
3452 5533
2346 1230
5533 6474
6474 1231
1231 1293
1293 null
然后输出应外观:
accountid based on
3123 3123
5533 3123
6474 3123
1231 3123
1293 3123
3443 3443
3452 3443
6474 3443
1231 3443
1293 3443
5646 5646
4342 5646
7563 7563
等。 是否可以在SQL中执行?或者我需要使用pl sql?
谢谢kordirko! :)我还有一个问题,你可以看看我的代码进行分层查询吗?我认为这是好的,但有一些重复的问题,我不知道如果我做得那么正确... – bazyl