2011年12月26日

[pgsql-jp: 41015]家系図を取り出すSQL

お世話になります。 上尾と申します。

環境
php5.16
PostgreSQL 8.1.11

下記のようなテーブルから家系図を取り出す方法を考えているのですが
効率の良い方法が見つからず悩んでいます。

このような構造から階層の深さを指定して一発で取り出すSQLは無いのでしょうか?

子どもID 母親ID 父親ID
M A B
N C D
O E F
P G H
Q I J
R K L
S M O
T N P
U Q R
V S U

例えば子どもID(V)を起点に祖父母迄を抽出すると
起点の子供:V
両親:S、U
祖父母:M、O、Q、R
曾祖父母:A、B、E、F、I、J、K、L
となりますがこのようなデータを一発で取得する方法は無いのでしょうか?

PostgreSQL 8.4からは再帰SQLと言うのが使えるようですが現在の
PostgreSQLのバージョンアップは行えません。

connectby関数と言うのを見つけましたが親IDとして指定できるカラムが1つ
だけなようなので今回のように両親(必ず親が二人いる)場合はうまく使えない
のかなと思っていますが違うのでしょうか?

PHPの方で再帰的にSQLを呼び出せば出来るのは分かるのですがパフォーマンス的に
悪そうなのでPostgreSQL側で処理したいなあと考えています。
よろしくお願いいたします。


投稿者 xml-rpc : 2011年12月26日 22:36
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/107734
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。