許せない心理テスト

以下の動作を行うのをSQLのみ(PL/SQL等不可)で
行いたいですが方法が分かりませんので教えて下さい。

親の親の・・・を取得するSQL
[例]
項目1(子)  項目2(親)
X1 Y1
A10 B10
B10 C20
C20 D30
-----------------------
上記の場合において、子から親をループさせながら取得します。
X1の結果はY1
A1、B10、C20の結果は全てD30が返されるようにしたいです。

A 回答 (3件)

>SQLのみ(PL/SQL等不可)



RDBMSは、このカテゴリ通りMySQLなのでしょうか?
バージョンは?
    • good
    • 0

あっと・・・文中inner joinと書きましたが


SQLにあるようにleft joinでした
    • good
    • 0

ぱっとおもいつき・・・



もしさかのぼる数に上限つけていいなら単純にさかのぼりたいだけ
inner joinするというやり方も。

テーブル名を仮にhogeとしたとき5段階さかのぼってみると
select h1.X1,coalesce(h5.Y1,h4.Y1,h3.Y1,h2.Y1,h1.Y1) as Y1
from hoge as h1
left join hoge as h2
on h1.Y1=h2.X1
left join hoge as h3
on h2.Y1=h3.X1
left join hoge as h4
on h3.Y1=h4.X1
left join hoge as h5
on h4.Y1=h5.X1

みたいな感じでできそうです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報