[前][次][番号順一覧][スレッド一覧]

mysql:7877

From: Shinya Kawaji <Shinya Kawaji <kawaji@xxxxxxxxxx>>
Date: Thu, 05 Jun 2003 20:30:59 +0900
Subject: [mysql 07877] Re: データ取得方法について

かわじ、です。

余計なことをいくつか書いていますが、結論は後半の方にあります。


> create table count_tbl(
>   c_id bigint(20) unsigned not null auto_increment,
>   c_media_id bigint(20) unsigned not null default '0',
>   c_date_id bigint(20) unsigned not null default '0',
>   c_num bigint(20) unsigned not null default '0',
>   primary key(count_id)
> ) type=myisam;

きっと primary key は

primary key(c_id)

でしょうね(フィールド名が間違っている)。


> insert into media_tb values(1,'zzz','コードなし');
> insert into media_tb values(2,'aaa','テスト広告');

これは

insert into media_tbl values(1,'zzz','コードなし');
insert into media_tbl values(2,'aaa','テスト広告');

でしょう(テーブル名が間違っている)。


> 結果的に、過去ログにあります、
> 「[mysql 06807] Re: 日付型の条件検索について」と、
> 同様な出力を行いたいのですが、データを取り出す事すら出来ません。

多少面倒でも、「期待する出力結果」を作成していただく方が、
答える方もわざわざ「質問内容を解釈」しなくてもいいのですが、
それはともかく、以下のような結果の意味でしたら、

+------------+------------+------------+------------+------------+
| media_code | media_name | 2003-05-01 | 2003-05-02 | 2003-05-03 |
+------------+------------+------------+------------+------------+
| zzz        | コードなし |         13 |          1 |          0 |
+------------+------------+------------+------------+------------+
| aaa        | テスト広告 |          7 |          7 |          2 |
+------------+------------+------------+------------+------------+

以下のような SQL でどうでしょう?(効率良いかは分かりませんが)

select
  media_code,
  media_name,
  sum(if(date_name='2003-05-01',c_num,0)) as `2003-05-01`,
  sum(if(date_name='2003-05-02',c_num,0)) as `2003-05-02`,
  sum(if(date_name='2003-05-03',c_num,0)) as `2003-05-03`
from
  media_tbl
  left join count_tbl on media_tbl.media_id = count_tbl.c_media_id
  left join date_tbl on count_tbl.c_date_id = date_tbl.date_id
group by
  media_tbl.media_id
order by
  media_tbl.media_id
;



[前][次][番号順一覧][スレッド一覧]

      7876 2003-06-05 19:48 [<lav@xxxxxxxxxx>    ] データ取得方法について                  
->    7877 2003-06-05 20:30 ┗[Shinya Kawaji <kawaj]