[pgsql-jp: 38449] Re: 階層問い合わせについて
KIMURA, Meiji
kimura804 @ ybb.ne.jp
2007年 5月 25日 (金) 23:25:02 JST
こんばんわ、木村明治@キムラデービーです。
--- kuma <kuma @ fgy.co.jp> wrote:
> お世話になります、熊田です。
>
> 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の第四引数に"row1"のかわりに、"keyid"や"pos"を指定すればいいんじゃないでしょうか?
試してみてください。
--
キムラデービー代表 木村明治(KIMURA, Meiji)
http://kimuradb.com
[News] 2007/6/5 CodeGearデベロッパーキャンプでBDEセッションやります。
http://dn.codegear.com/jp/article/36304/
pgsql-jp メーリングリストの案内