2017-08-16 25 views
0

I親/子IDのペアが含まれ、次のマッピングテーブルがあります。MS SQL Serverの:子供のすべての親を持つビュー

parent_id | child_id 
    3  |  5 
    5  |  4 
    4  |  9 
    6  |  7 
    7  |  8 

は、私はすべての親をリストし、このテーブルのビューを作成する必要があります与えられた子供のビューは、特定のID、より親、複数の行の(直接的または間接的な)それぞれの親の行を有することになる

parent_id | child_id 
    3  |  5 
    3  |  4 
    5  |  4 
    3  |  9 
    5  |  9 
    4  |  9 
    6  |  7 
    6  |  8 
    7  |  8 

:上記の例を使用して、得られたビューは、このようになります。この表にループがないと仮定できます。

私は、再帰的な選択とループに見てきたが、私はビューにそれらを組み込む方法がわからないんだとしてこれをアプローチするかどうかはわかりません。あなたは再帰CTEのでこれを行うことができ

答えて

0

with cte as (
     select t.parent_id, t.child_id 
     from t 
     where t.child_id = @child -- not needed if you want all 
     union all 
     select t.parent_id, t.child_id 
     from cte join 
      t 
      on t.child_id = cte.parent_id 
    ) 
select * 
from cte; 
+0

結果の正しい数を与えますが、上記の例を、以下の、例えば '9'結果表に3回存在するが、毎回' PARENT_ID 'は同じです - その直接の親である' 4 '。 – mmvsbg

関連する問題