sql >> データベース >  >> RDS >> Oracle

データベースの推移的な依存関係を解決するためのSQLクエリ

    Oracle 11gを実行しているとき(およびリリース2の場合)、メソッドの1つとして、再帰共通テーブル式(再帰サブクエリ因数分解とも呼ばれます)を使用できます目的の結果を得るには

    SQL> with rcte(r1, r2, lv, root) as(
      2    select r1
      3         , r2
      4         , 0 lv
      5         , r1
      6     from rd
      7    where r1 = 1
      8  
      9    union all
     10  
     11    select t.r1
     12         , t.r2
     13         , lv + 1
     14         , q.root
     15      from rd   t
     16      join rcte q
     17        on (t.r1 = q.r2)
     18  )
     19  search depth first by r1 set s
     20  cycle r1 set is_cycle to 'y' default 'n'
     21  
     22  select root
     23       , r2
     24    from rcte
     25  where is_cycle = 'n'
     26    and r2 <> root
     27  ;
    
          ROOT         R2
    ---------- ----------
             1          2
             1          3
             1          4
             1          5
    


    1. PHPエコーSQLカウント

    2. SQLclおよびSQL*Plus(Oracle)で「選択されたX行」を削除する方法

    3. dblinkは.pgpassファイルを使用しません

    4. Mysqlは、LIKEで検索中に2つの列を連結します