[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 メーリングリストの案内