2010年9月21日

[pgsql-jp: 40413] Re:階層問い合わせの使い方について

2010年9月21日16:12 Tomoaki Sato <sato@xxxxx>:
> 佐藤です。
>
>> 佐藤です。
>>
>> 8.3 で再帰問い合わせが使えないから connectby 関数でやっているんですね。
>> もうちょっと考えてみます。
>

> スマートではないですが、自己結合すればできますね。
>
> =# SELECT DISTINCT g.key, g.key_p, g.name
> -# FROM goods AS g, goods AS g2
> -# WHERE g.key IN (
> (# SELECT g3.key
> (# FROM connectby('goods', 'key', 'key_p', g2.key, 0)
> (# AS t(key text, key_p text, level int), goods AS g3
> (# WHERE g3.key = t.key
> (# ) AND g2.name LIKE '%菓子%';
> ただ、これなら 1 つの SQL にこだわらず、条件に一致するキーを取得し、キー
> ごとに connectby 関数を実行したほうがいいかもしれません。
>

1つのSQLにこだわらないならPL/pgSQLも検討の価値ありですね。再帰呼び出しで直感的に記述できます。
8.3までなら自分はこのような問題でPL/pgSQLをよく使っていました。8.4からはもちろん再帰クエリを使っていますが :)


--
Hitoshi Harada


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




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