1

子列とそれに続く親列とのすべての関係を示すテーブルを作成する方法がわかりません。Teradata SQL Assistant で SQL を使用しています。

たとえば、ここに私が持っているデータがあります:

親| 子                               
あ | B                                                     
あ | ハ         
ビ | D           
え | え

次のように、下位レベルの子要素とそれに続くすべての親要素を表示する出力テーブルを取得できるようにしたいと考えています。

子供 | 子供 | 親 L1 | 親 L1 | 親L2        
シー | あ       
D | ビ | あ       
え

つまり、自分のデータにいくつのレベルの親が存在するのかわからず、クエリ データへのアクセスしか許可されていないため、新しいテーブルを作成したり、このテーブルを変更したり、値を変更したりすることはできません。

クエリで期待される出力を取得する方法はありますか?

ありがとうございました!

4

1 に答える 1

3

このようなもの(Teradataを利用できないため、PostgreSQLでテスト済み):

with recursive tree as (

    select parent, child, child||'/'||parent as path
    from foo
    where child not in (select parent from foo)
    or parent = child

    union all

    select c.parent, c.child, p.path||'/'||c.parent
    from foo c
      join tree p on c.child = p.parent
    where c.parent <> c.child
)
select path
from tree
order by parent;
于 2012-07-04T10:22:00.867 に答える