SQLで再帰したかった。

できねぇなーだるいなぁー、と思っていたんだがどうやら出来るらしかった。

OracleのCONNECT BY句。「階層問合せ」とか呼ぶらしい。というか、データ自身が再帰に適した構造(というか木構造とかの階層構造)じゃないとだめなんだけどね。

で、次のSQLは親行の"俺コード"値が子行の"俺の親コード"値と等しいという階層関係を表すらしい。

select lpad(' ',2*(level-1))||名前 as 俺の系譜 from 俺一族
connect by prior 俺一族.俺コード = 俺一族.俺の親コード
start with 俺一族.俺コード = '俺様'

これで「俺様」の子孫が取れまくリング。インデントも付いちゃう。まぁ、子孫がいないとダメなんだけどね。。

ぷっぷくぷー。参考

にほんのひまじん について

フリーのサラリーマン
カテゴリー: 未分類 タグ: パーマリンク