[pgsql-jp: 33408] Re: PostgreSQLによる集計について。
Naomasa Numajiri
naonuma @ ubiquitous.co.jp
2004年 6月 28日 (月) 21:47:54 JST
こんにちは
答えは分かりませんが、同じ状況での僕のやり方を
* 質問するなら、CREATE TABLE文とエラーの出るSELECT文を
そのまま書きます。再現確認の作業が簡単なら、見てくれる
人が期待できるので。
* でも、その質問をするまえに、
1. 任意のテーブルを選ぶ
2. そのテーブルと、それに関係したところを、SQL文から取り除く
3. それでもエラーが出るかチェック
4. 1-3を繰り返して、エラーの発生箇所を絞り込む
5. 発生箇所について、マニュアルの見直し
- トラブルの度にマニュアルと格闘すればスキルアップします。
- あるいは、エラー内容からGoogleで検索
ということをします。
参考になれば
--ぬ
On Mon, 28 Jun 2004 21:33:27 +0900
Shinsuke Saitou <saitou @ doragon.info> wrote:
; 初めまして、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 メーリングリストの案内