こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHP+MySQLでクロス集計は出来ますか?

こんばんは。
いつもお世話になっております。

検索して調べてみたのですが、見つからなかったので
質問させていただきました。
どうか、ご指導よろしくお願いいたします。

syouhin_tb(商品テーブル)
syouhin_id
syouhin_name
siiresaki_id

uriage_tb(売り上げテーブル)
uriage_id
nen
tuki
syouhin_id
uriage_kingaku
tanka
uriage_kazu

という、二つのテーブルから
----------------------------------------
nen ┃tuki┃syouhin_name┃uriage_kingaku┃tanka┃uriage_kazu
------------------------------------------
2005┃ 01 ┃ コサージュA┃    1000   ┃ 500 ┃2
2005┃ 02 ┃ コサージュA┃    1500   ┃ 500 ┃3
<略>
というところまでは出来たのですが、これを年ごとに
月別で表に出力する事は可能なのでしょうか・・・?

【希望出力画面】
--------------------------------------------------
2005年売り上げ表
syouhin_name┃  1月    ┃  2月    ┃・・
コサージュA ┃1000┃500┃2┃1500┃500┃3┃・・
コサージュB ┃3600┃400┃9┃2000┃400┃5┃・・

よろしくお願いいたします。

投稿日時 - 2005-02-25 03:13:00

QNo.1237017

困ってます

質問者が選んだベストアンサー

間違っているかもしれないけども。

SELECT nen,tuki,syouhin_name,uriage_kingaku,tanka,uriage_kazu from uriage_tb LEFT JOIN syouhin_tb ON uriage_tb.syouhin_id = syouhin_tb.syouhin_id GROUP BY uriage_tb.syouhin_id,CONCAT(nen,tuki) ORDER BY CONCAT(nen,tuki);

とすれば
nen | tuki | syouhin_name | uriage_kingaku | tanka | uriagekazu
2005| 02 | コサージュA |    1000   |  500 |   2

という風に表示されると思います。

投稿日時 - 2005-02-25 11:21:47

補足

すみません。まだちゃんとPHPの基礎部分が
頭に入っていなかったみたいで、SQL文で
縦に吐き出されていても、PHPで
横並びで表示するようにしたら良いのだと
いうことに、やっと理解できるようになりました。
ご指導、ありがとうございました。

投稿日時 - 2005-03-25 04:59:32

お礼

こんにちは。

ご指導頂いているのに、気がつかず、お礼が
遅くなってしまって、大変もうしわけありません
でした・・・。

ご指導ありがとうございます。

教えて頂いた方法ですと、年・月が縦に並んで行くので
ぱっと見た時に、こさーじゅAなどの商品名も
縦にざーっと並んでしまって、他の商品が何月に
どれだけ売れてて、この商品が、何月にどれだけ売れた
のか、という見比べがしにくいかな、と思うのです。

一つの商品に対する、月別集計を、縦 商品名 横 年月 という形に出したいのです。


書き込みをしてから、私なりに調べてみていたのですが
まずは、月ごとの商品売り上げ数だけを、商品ごとに
月別集計表として出そうとしてみたのですが、
【↓希望表示方法】
--------------------------------------------
商品名│1月│2月│3月│・・・
---------------------------------------------
コサA│ 0│ 2│15│・・・
-----------------------------------------
という形に、SQL文だけで出すのは、かなり
難問のように思いました。

なので、
『  $a 』年度(yyyyで入力)
--------------------------------------------
商品名│1月│2月│3月│・・・
---------------------------------------------
 $sh1│ $1 │$2  │$3  │・・・
-----------------------------------------
<略> ※50行まで作成

という空のテーブルを、まずHTMLで作って置いて、
my_sql_fetch_arryで、一件ずつ取得したカラムを
if分を使って、月と同じなら$1に値を入れる、月と
違っていたら、なにも返さない、という処理を
繰り返させたらどーだ! なんて思ってやってみようと
していたのですが、よーく考えると
--------------------------------------------
商品名│1月│2月│3月│・・・
---------------------------------------------
コサA│  │  │  │・・・
-----------------------------------------
コサA│  │ 2│  │・・・
-----------------------------------------
コサA│  │  │15│・・・
-----------------------------------------

になるので、意味がない・・・・と、うなだれて
しまいました・・・。

何か良い方法は、ないものなのでしょうか・・・。

投稿日時 - 2005-02-27 06:56:52

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問