[pgsql-jp: 41015] 家系図を取り出すSQL
a-rank
kamio @ a-rank.net
2011年 12月 26日 (月) 22:36:22 JST
お世話になります。 上尾と申します。
環境
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側で処理したいなあと考えています。
よろしくお願いいたします。
pgsql-jp メーリングリストの案内