2010年9月24日

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

お世話になります、大熊です。

皆さん、いろいろとご教示いただきありがとうございます。
再帰問い合わせは魅力的なんですが、どうしても現環境を使わざる得ない状況な
のでconnectbyになってしまいます。
また、PL/pgSQLやtablefunc.cを修正するとなると、かなりスキルが足りません
ので佐藤さんにご提示していただいた方法でやってみたいと思います。

ありがとうございました。

> スマートではないですが、自己結合すればできますね。
>
> =# 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 '%菓子%';
> key | key_p | name
> ------+-------+------------
> 1500 | 1000 | お菓子
> 1510 | 1500 | 和菓子
> 1511 | 1510 | 生和菓子
> 1512 | 1510 | まんじゅう
> 1513 | 1510 | ようかん
> 1514 | 1510 | せんべい
> 1515 | 1510 | 最中
> 1520 | 1500 | 洋菓子
> 1521 | 1520 | プリン
> 1522 | 1520 | ゼリー
> 1523 | 1520 | ケーキ
> 1524 | 1520 | パイ
> 1525 | 1520 | カステラ
> (13 rows)
>
> ただ、これなら 1 つの SQL にこだわらず、条件に一致するキーを取得し、キー
> ごとに connectby 関数を実行したほうがいいかもしれません。


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




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