できねぇなーだるいなぁー、と思っていたんだがどうやら出来るらしかった。
OracleのCONNECT BY句。「階層問合せ」とか呼ぶらしい。というか、データ自身が再帰に適した構造(というか木構造とかの階層構造)じゃないとだめなんだけどね。
で、次のSQLは親行の"俺コード"値が子行の"俺の親コード"値と等しいという階層関係を表すらしい。
select lpad(' ',2*(level-1))||名前 as 俺の系譜 from 俺一族
connect by prior 俺一族.俺コード = 俺一族.俺の親コード
start with 俺一族.俺コード = '俺様'
これで「俺様」の子孫が取れまくリング。インデントも付いちゃう。まぁ、子孫がいないとダメなんだけどね。。
ぷっぷくぷー。参考。