mysql:8847
From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Sat, 21 Feb 2004 15:16:16 +0900
Subject: [mysql 08847] Re:
こんにちは。 lavlav@xxxxxxxxxxさんの <002d01c3f795$91cfac40$fa01a8c0@d276lut1b> "[mysql 08839] Re: " TRANSFORMクエリが使えれば、一発なんですが、使えないとなると、 [mysql08841]で沼田さんが示された方法位しか無いですね。しかし、24*2=48発 のクエリを出して、は少々問題があるでしょう。 考え方の転換をしてみましょう。結果出力がHTMLであれば、PerlなりPHP なりJavaなりの処理系を使っていると思います。ならば、DBMSで苦心惨憺して最 終的な表を得るよりは、DBMSで得た中間集計を処理系で最終的な表にする方が良 いでしょう。具体的には最終的な表の値を格納する配列に、クエリで得られたメー ルのカウントを放り込んで行く方法です。また配列を用いなくとも、直接HTMLの テーブルを中間集計から作成して行く事も可能ですが、これはプログラミングに 自信がある人向けですね。 中間集計を得るSQL文は例えばこの様なものでしょう。このSQL文中の '2004-02-01'の箇所を範囲の自年月日に '2004-02-04'の箇所を範囲の至年月日に 1111の箇所を対象グループIDに 置き換えを行います。 SELECT TO_DAYS(mail_datetime)-TO_DAYS('2004-02-01') AS DAYS, DATE_FORMAT(mail_datetime,'%Y-%m-%d') AS YMD, HOUR(mail_datetime) AS HH, master_tb_f.master_group_id AS FROM_GID, master_tb_t.master_group_id AS TO_GID, count(*) AS CNT FROM (mail_tb INNER JOIN master_tb AS master_tb_f ON mail_tb.mail_from_master_id=master_tb_f.master_id) INNER JOIN master_tb AS master_tb_t ON mail_tb.mail_to_master_id=master_tb_t.master_id WHERE DATE_FORMAT(mail_datetime,'%Y-%m-%d') between '2004-02-01' AND '2004-02-04' AND ( master_tb_f.master_group_id=1111 OR master_tb_t.master_group_id=1111 ) GROUP BY DAYS,YMD,HH,FROM_GID,TO_GID ORDER BY DAYS,HH,FROM_GID,TO_GID アプリケーション構築の際には、クエリで何が出来るのか、プログラムで何が 出来るのか、そしてどちらで行った方が適切なのか、を常に考える必要があるか と思います。 松枝知直 <tomom@xxxxxxxxxx> http://www.argus.ne.jp/~tomom/
8833 2004-02-20 17:48 [<lavlav@xxxxxxxxxx> ] 8834 2004-02-20 17:55 ┣[<lavlav@xxxxxxxxxx> ] Re: SQL 文について 8836 2004-02-20 18:09 ┣[遠藤 俊裕 <endo_t@xx] 8839 2004-02-20 18:40 ┃┗[<lavlav@xxxxxxxxxx> ] 8841 2004-02-20 20:23 ┃ ┣[<numata@xxxxxxxxxx> ] 8844 2004-02-21 04:51 ┃ ┣[Kazuhiro Yoshida <mo] 8846 2004-02-21 14:24 ┃ ┃┗[<konet218@xxxxxxxxxx] 8849 2004-02-21 17:59 ┃ ┃ ┣[Kazuhiro Yoshida <mo] 8850 2004-02-21 18:38 ┃ ┃ ┃┗[<konet218@xxxxxxxxxx] 8852 2004-02-22 02:22 ┃ ┃ ┃ ┗[Kazuhiro Yoshida <mo] 8855 2004-02-22 16:11 ┃ ┃ ┗["katayose" <katayose] 8857 2004-02-23 02:03 ┃ ┃ ┗[ML account <ml@xxxxx] -> 8847 2004-02-21 15:16 ┃ ┗[ML account <ml@xxxxx] 8848 2004-02-21 17:18 ┃ ┗[<konet218@xxxxxxxxxx] 8838 2004-02-20 18:15 ┗[Shingo Yamagai <yama] Re: SQL 文について