レコードは列でリンクされた同じテーブルに親子として保存されpairkey、さらに親は列でリンクされた 2 つの脚に分割されscndlegます。つまり、列に連結された 2 つの親脚があり、各親には、列に親scndlegを持つ子があります。seqnnopairkey
1 つの完全なバッチを次のように選択する必要があります。
Both legs of interlinked parents
UNION
All children of these two parents
レコードは列でリンクされた同じテーブルに親子として保存されpairkey、さらに親は列でリンクされた 2 つの脚に分割されscndlegます。つまり、列に連結された 2 つの親脚があり、各親には、列に親scndlegを持つ子があります。seqnnopairkey
1 つの完全なバッチを次のように選択する必要があります。
Both legs of interlinked parents
UNION
All children of these two parents
クエリの新しいバージョンを編集します (末尾の SQLFiddle へのリンク)。
SELECT
seqnno,
narration,
pairkey,
scndleg
FROM (
SELECT p.*, LEAST(seqnno, scndleg) related_leg_min_id
FROM pairs p
)
START WITH scndleg IS NOT NULL
CONNECT BY pairkey = PRIOR seqnno AND scndleg IS NULL
ORDER BY connect_by_root(related_leg_min_id), scndleg DESC NULLS LAST, pairkey
;
出力:
SEQNNO ナレーション PAIRKEY SCNDLEG
---------- ------------------------ ---------- ------ ----
1 1 脚目の親 1 4
4 2 番目の足の親 4 1
2 1足目の子 1
3 1足目の子 1
5 2足目の子 4
6 2足目の子 4
7 別の第 1 脚の親 7 10
10 別の第 2 足の親 10 7
8 別の第 1 足の子 7
9 別の第 1 足の子 7
11 別の第 2 足の子 10
12 別の第 2 足の子 10