mysql:8927
From: (二見) <<n.futami@xxxxxxxxxx>>
Date: Mon, 08 Mar 2004 15:58:27 +0900
Subject: [mysql 08927] Re: 日付検索
スズキ殿
フタミと申します、こんにちは
下記の件で
既出の松枝殿のテーブルを参考にSQLを作りました
select customer.cid
from customer
left join report on (customer.cid = report.cid) and (report.issued > date_sub(now(),interval 2 month))
where report.cid is null
;
##2ヶ月以内のレコードが存在するcidとJOINし、結合できない(report.cid がNULL)cidを抽出する
また、間違えと思われる最後の行の2003/01/20は2004/01/20に置き換えたとすると
mysql> select customer.cid
-> from customer
-> left join report on (customer.cid = report.cid) and (report.issued > date_sub(now(),interval 2 month))
-> where report.cid is null
-> ;
+-----+
| cid |
+-----+
| 2 |
| 4 |
| 5 |
+-----+
3 rows in set (0.00 sec)
過去2ヶ月以内にレポート提出の無いcidのみ出力するのでしたら
上記の様にできると思われます
実際に参考になるか解りませんが、どうでしょうか?
infowebさんが[2004/03/05 15:33:16]に出された
題名「[mysql 08906] 日付検索」に付いての返信です
---------------Original Message-------------------------
>スズキと申します。現在日付による検索について悩んでいます。過去ログなどで検索
>しましたが
>未だ良い方法が見つけられず困っています。皆さんの知恵を拝借できれば大変ありが
>たいです。
>
>顧客テーブルとレポートテーブルがあります。
>
>顧客テーブルには
>
> 顧客番号 顧客名 住所
>----------+---------+-------+
> 1 | ああああ | 東京 |
>----------+---------+-------+
> 2 | いいいい | 埼玉 |
>----------+---------+-------+
> 3 | ううううう | 千葉 |
>----------+---------+-------+
> 4 | ええええ | 大阪 |
>-----------------------------
>
>レポートテーブルには
>
> 顧客番号 内容 日付
>----------+---------+--------------+
> 1 | etc | 2004-01-15 |
>----------+---------+--------------+
> 2 | etc | 2003-11-20 |
>----------+---------+--------------+
> 3 | etc | 2003-12-01 |
>----------+---------+--------------+
> 1 | etc | 2003-12-24 |
>----------+---------+--------------+
> 4 | etc | 2004-01-01 |
>----------+---------+--------------+
> 4 | etc | 2003-11-20 |
>----------+---------+--------------+
> 2 | etc | 2003-12-20 |
>------------------------------------
> 3 | etc | 2003-01-20 |
>------------------------------------
>
>などと入っています。
>やりたいことは本日より過去2ヶ月以内にレポートの登録がある顧客以外の顧客番
>号、または最新のレポート内容
>を抽出することです。上の場合だと、顧客番号2と4が結果として得られる。
>いろいろ試してみたのですがどれもしっくりいかず投稿した次第です。
>
>1.過去2ヶ月以内に登録されてあるレポートの顧客番号をグループ化などをして抽
>出し、配列に入れる。
>2.レポートを日付に限らずグループ化し顧客番号を配列に入れる。
>3.php上で配列を照らし合わせ1の配列に顧客番号があれば表示しない。
>
>または顧客テーブルに日付フィールドを追加してレポートの登録があった場合顧客
>テーブルの日付を更新する。
>
>など、これは考えたほんの一例ですが1の場合レポートや顧客の数が増えれば増える
>ほど・・・。2はテーブルを
>いじらなければならない・・・なるべく既存の状態で行いたい。そしてできれば一つ
>のsql文で結果を得たい。
>
>そもそも一つのsql文で出来るのでしょうか?どうも良い方法が思いつきません。突
>然でしかもぶしつけな書き方で
>申し訳ありませんがよろしくお願いします。
>
>環境
>php4.0.6
>MySQL 3.23.56-MAX
>
>/***********************/
> Ryo Suzuki
> fwkn8598@xxxxxxxxxx
>/***********************/
>
>
8906 2004-03-05 15:33 ["infoweb" <fwkn8598@] 日付検索 8907 2004-03-05 16:10 ┣["山本 瑞己" <mizuki] 8908 2004-03-05 16:54 ┃┗["infoweb" <fwkn8598@] 8909 2004-03-05 17:59 ┣[ML account <ml@xxxxx] -> 8927 2004-03-08 15:58 ┗[<n.futami@xxxxxxxxxx]