この回答では、すべてのサブノードを取得する方法と、ルート ノードへの参照を取得する方法を尋ねました。今、私は逆も必要であることに気づきました:
すべてのノードとすべての親が必要です。
したがって、この単純なツリーでは:
1 - 2 - 3
L - 4 - 5
L - 6
7 - 8
私はを頂きたい
1 1;
2 2;
2 1;
3 3;
3 2;
3 1;
4 4;
4 2;
4 1;
5 5;
5 4;
5 2;
5 1;
6 6;
6 4;
6 2;
6 1;
7 7;
8 8;
8 7;
(順番は関係ありません)
これは逆を取得するためのクエリでした (親からすべての子を取得します)。私はそれで遊んでみましたが、解決策を見つけることができませんでした。提案していただけますか?
-- get all childs of all parents
WITH q AS
(
SELECT ID_CUSTOMER, ID_CUSTOMER AS root_customer
FROM CUSTOMERS c
UNION ALL
SELECT c.ID_CUSTOMER, q.root_customer
FROM q
JOIN CUSTOMERS c
ON c.ID_PARENT_CUSTOMER = q.ID_CUSTOMER
)
SELECT *
FROM q