[pgsql-jp: 33407] PostgreSQLによる集計について。
Shinsuke Saitou
saitou @ doragon.info
2004年 6月 28日 (月) 21:33:27 JST
初めまして、saitouと申します。
現在、PerlとDBI(Postgre7.4.3)にて集計プログラムを組んでいます。
しかし、SQLの組み方はあっているとおもうんですが
うまくいきません・・・。
もし、SQLに詳しい方がいらっしゃいましたら
どうか、ご教授いただけないでしょうか。
・やりたいことは、大元テーブル(all_master)に各IDが振ってあり
そのIDと各マスタテーブルのIDをひもづけて名称等を持ってきて
file名で集計するということをやりたいと思っております。
以下に、テーブル構成・SQLを記します。
■テーブル構成
・all_master
カラム名 型
caria_code varchar --master_cariaのcaria_codeと
master_characterのcaria_codeとリレーション
contents_code varchar --master_contentsのcontents_codeと
master_characterのcontents_codeとリレーション
category_code varchar --master_categoryのcategory_idと
master_characterのm3_code3とリレーション
file_no varchar --master_characterのchar_idと
リレーションを貼る
date date --単純に日付で条件を絞る
・master_caria ・master_category
caria_id varchar category_id varchar
caria_name varchar category_name varchar
・master_character ・master_contents
caria_id varchar contents_id varchar
contents_id varchar contents_name varchar
category_id varchar type varchar
char_id varchar
char_name varchar
■SQL文
SELECT
l.caria_code, cr.caria_name,
l.contents_code, ct.contents_name,
ch.char_id, ch.char_name,
l.file_no,
l.category_code, cg.category_name,
count(l.file_no) as count
FROM
all_master as l
inner join master_caria as cr on l.caria_code = cr.caria_id
inner join master_contents as ct on l.contents_code = ct.contents_id
inner join master_category as cg on l.category_code = cg.category_id
inner join master_character as ch on l.file_no = ch.file_no
and l.caria_code = ch.caria_id
and l.contents_code = ch.contents_id
and l.category_code = ch.category_id
WHERE
substr(date,0,8) = '2004-02' and l.contents_code=99999
GROUP BY
l.caria_code, l.contents_code, l.category_code, l.file_no,
cr.caria_name, ct.contents_name, cg.category_name ,ch.char_id,
ch.char_name ,ch.caria_id, ch.contents_id, cg.category_id
ORDER BY
l.caria_code, l.contents_code, l.category_code, l.file_no;
かなり、長文になってしまい申し訳ありませんが
このSQLのどこがおかしいかご教授できないでしょうか。。
わかりにくいかと思いますが、どうかよろしくお願いいたします。
pgsql-jp メーリングリストの案内