0

レコードは列でリンクされた同じテーブルに親子として保存されpairkey、さらに親は列でリンクされた 2 つの脚に分割されscndlegます。つまり、列に連結された 2 つの親脚があり、各親には、列に親scndlegを持つ子があります。seqnnopairkey

このフィドルを見てください

1 つの完全なバッチを次のように選択する必要があります。

Both legs of interlinked parents
UNION
All children of these two parents

そして、フィドルに示されている同じパターンなどに従う他のバッチ

4

1 に答える 1

0

クエリの新しいバージョンを編集します (末尾の 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            

SQLFiddle

于 2013-10-31T08:09:02.790 に答える