[pgsql-jp: 38448] 階層問い合わせについて
kuma
kuma @ fgy.co.jp
2007年 5月 25日 (金) 21:07:04 JST
お世話になります、熊田です。
8.1.x系にcontrib/tablefuncを入れてconnectby()関数で階層問い合わせを行っ
ています。
以下、サンプルの通り環境を作り実行しました。
-----------------------------------------------------------------------
CREATE TABLE connectby_tree(keyid text, parent_keyid text, pos int);
INSERT INTO connectby_tree VALUES('row1',NULL, 0);
INSERT INTO connectby_tree VALUES('row2','row1', 0);
INSERT INTO connectby_tree VALUES('row3','row1', 0);
INSERT INTO connectby_tree VALUES('row4','row2', 1);
INSERT INTO connectby_tree VALUES('row5','row2', 0);
INSERT INTO connectby_tree VALUES('row6','row4', 0);
INSERT INTO connectby_tree VALUES('row7','row3', 0);
INSERT INTO connectby_tree VALUES('row8','row6', 0);
INSERT INTO connectby_tree VALUES('row9','row5', 0);
SELECT * FROM connectby('connectby_tree', 'keyid', 'parent_keyid', 'row1',
0, '~')
AS t(keyid text, parent_keyid text, level int, branch text);
keyid | parent_keyid | level | branch
-------+--------------+-------+--------------------------
row1 | | 0 | row1
row2 | row1 | 1 | row1~row2
row4 | row2 | 2 | row1~row2~row4
row6 | row4 | 3 | row1~row2~row4~row6
row8 | row6 | 4 | row1~row2~row4~row6~row8
row5 | row2 | 2 | row1~row2~row5
row9 | row5 | 3 | row1~row2~row5~row9
row3 | row1 | 1 | row1~row3
row7 | row3 | 2 | row1~row3~row7
-----------------------------------------------------------------------
ここで各階層毎にソートを行いたいのですが可能なのでしょうか。
parent_keyid(親キー)に同じ値を持つrow2,row3などをkeyidやposなどでソー
トをした結果が取得したいのです。
connectby()に関して情報があまり見当たりませんので、分かる方がいればお願
いいたします。
また、connectby()と使用せずに、階層問い合わせ同様の取得方法がありました
らお願いいたします。
pgsql-jp メーリングリストの案内