私は構造を持っています(例、括弧内 (id, parent_id) ):
- ディレクトリ 1 (1,0)
- サブディレクトリ 1 (44,1)
- 項目 1 (83,44)
- 項目 2 (98,44)
- サブディレクトリ 2 (46,1)
- 項目 1 (8,46)
- 項目 2 (9,46)
- ディレクトリ 2 (4,0)
- サブディレクトリ 1 (54,4)
- 項目 1 (43,54)
- 項目 2 (48,54)
- サブディレクトリ 2 (101,4)
- アイテム1 (19,101)
- 項目 2 (314,101)
入力には ID のリストがあります。親ディレクトリの ID はなく、子 ID がある場合は、すべての祖先を表示する必要があります。例: 入力: 83、46、43、48 出力:
- ディレクトリ 1 (1,0)
- サブディレクトリ 1 (44,1)
- 項目 1 (83,44)
- サブディレクトリ 2 (46,1)
- ディレクトリ 2 (4,0)
- サブディレクトリ 1 (54,4)
- 項目 1 (43,54)
- 項目 2 (48,54)
私はリクエストを発明しました:
SELECT *
FROM (SELECT distinct *
FROM Table a
START WITH N in (83, 46, 43, 48) CONNECT BY PRIOR N_PARENT = N) a
START WITH N_PARENT in 0 CONNECT BY PRIOR N = N_PARENT
ORDER SIBLINGS BY N
しかし、ビッグデータでは遅いです。1個でお願いできます CONNECT BY
か?