以前作成したこのトピック ( MySQL : 残りの日の合計が 30 未満の行をカウントする ) によると、今、私は別の問題を抱えています。合計である 30 日以内に有効期限が切れる行が必要です。そのため、1 か月に期限切れになる製品の数を知ることができます。これが私のコードです:
user_db
id name exp_product1 exp_product2 exp_product1
1 John 2013-03-01 2013-02-28 2013-03-27
2 Alice 2013-02-25 2013-04-25 2013-10-10
3 Ken 2013-01-10 2013-01-20 2013-02-11
4 Elise 2013-04-11 2013-05-23 2013-11-11
5 Bruce 2013-03-14 2013-06-06 2013-09-10
上の表から。複数のユーザーからの 4 つの製品が、今後 30 日以内に期限切れになります。
- ジョン= exp_product1、exp_product2
- アリス= exp_product1 および
- ブルース= exp_product1
だから私は書いた:
SELECT count(*) AS exp_pax1
FROM user_db
WHERE exp_product1<=timestampadd(day, 30, now())
AND exp_product1 >= now();
SELECT count(*) AS exp_pax2
FROM user_db
WHERE exp_product2<=timestampadd(day, 30, now())
AND exp_product2 >= now();
SELECT count(*) AS exp_pax3
FROM user_db
WHERE exp_product3<=timestampadd(day, 30, now())
AND exp_product3 >= now();
次に、これらの結果を PHP で合計します (値がフェッチされたと仮定します)。
$exp_pax1=exp_pax1
$exp_pax2=exp_pax2
$exp_pax3=exp_pax3
$total_exp=$exp_pax1+$exp_pax2+$exp_pax3;//4
問題は、これらの行を 1 つの mySQL コマンドに短縮するにはどうすればよいかということです。提案してください。
よろしく、