1

以下の表のように、ParentId と ChildId の 2 つの列を持つテーブルがあり、複数のレベルが存在する可能性がある場合

ParentId    ChildId
   -1             1
   -1             2
    1             3
    3             4
    4             5

子に親がない場合は、-1 で示されます。

ここで、たとえば 5 の最上位レベルに親が必要な場合、その親は 4 で、その親は 3 で、その親は 1 です。その親 = -1 として 1 が答えです。

Sql サーバー CTE と再帰の例で説明しましたが、複雑に見えました。

グーグルから、WITH ASとUNIONを使用してこれを達成できることを知りました。この結果を得ることができる一般的なSQLに光を当てることができますか?

ありがとう

ノシブ

4

1 に答える 1

4
select connect_by_root(ChildId) as id
from t
where ChildId = 5
start with ParentId = -1
connect by ParentId = prior ChildId

フィドル

于 2013-03-20T23:17:13.740 に答える