レコードは列でリンクされた同じテーブルに親子として保存されpairkey
、さらに親は列でリンクされた 2 つの脚に分割されscndleg
ます。つまり、列に連結された 2 つの親脚があり、各親には、列に親scndleg
を持つ子があります。seqnno
pairkey
1 つの完全なバッチを次のように選択する必要があります。
Both legs of interlinked parents
UNION
All children of these two parents
レコードは列でリンクされた同じテーブルに親子として保存されpairkey
、さらに親は列でリンクされた 2 つの脚に分割されscndleg
ます。つまり、列に連結された 2 つの親脚があり、各親には、列に親scndleg
を持つ子があります。seqnno
pairkey
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