2010年9月21日

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

お世話になります、大熊と申します。

環境:PostgreSQL 8.3.7

create table goods (key char(4), key_p char(4), name text);

insert into goods (key, key_p, name) values ('1000', '0000', '食べ物');
insert into goods (key, key_p, name) values ('2000', '0000', '飲み物');

insert into goods (key, key_p, name) values ('3000', '0000', 'ファッション');
insert into goods (key, key_p, name) values ('4000', '0000', 'インテリア');
insert into goods (key, key_p, name) values ('1100', '1000', '肉');
insert into goods (key, key_p, name) values ('1200', '1000', '魚');
insert into goods (key, key_p, name) values ('1300', '1000', '野菜');
insert into goods (key, key_p, name) values ('1400', '1000', 'くだもの');
insert into goods (key, key_p, name) values ('1500', '1000', 'お菓子');
insert into goods (key, key_p, name) values ('1600', '1000', 'パン');
insert into goods (key, key_p, name) values ('1510', '1500', '和菓子');
insert into goods (key, key_p, name) values ('1520', '1500', '洋菓子');
insert into goods (key, key_p, name) values ('1510', '1511', '生和菓子');
insert into goods (key, key_p, name) values ('1510', '1512', 'まんじゅう');
insert into goods (key, key_p, name) values ('1510', '1513', 'ようかん');
insert into goods (key, key_p, name) values ('1510', '1514', 'せんべい');
insert into goods (key, key_p, name) values ('1510', '1515', '最中');
insert into goods (key, key_p, name) values ('1520', '1521', 'プリン');
insert into goods (key, key_p, name) values ('1520', '1522', 'ゼリー');
insert into goods (key, key_p, name) values ('1520', '1523', 'ケーキ');
insert into goods (key, key_p, name) values ('1520', '1524', 'パイ');
insert into goods (key, key_p, name) values ('1520', '1525', 'カステラ');

このようなデータを階層問い合わせを用いて「お菓子」以下をコードを指定して取得する場合は以下のように行いますが、

select goods.*
from connectby ( 'goods', 'key', 'key_p', '1500', 0)
as tree (key text, key_p text, level int ), goods
where goods.key = tree.key;

コード指定ではなく、引き渡される情報が"菓子"で項目nameに対してlike検索をかけて取得する場合はどのように行ったらよいのでしょうか?
( 'goods', 'key', 'key_p', '1500', 0)
^^^^^^
この部分を動的に変えたいのですが、SQL一発では無理なのでしょうか?

以上、宜しくお願い致します。


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




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