0

回転率の概要を毎日確認したいと考えています。

これは mySQL クエリです。

SELECT 
 o.date_purchased,
 round(ot.value,2)
FROM orders o
JOIN orders_total ot ON ot.orders_id = o.orders_id
WHERE o.date_purchased <=  '2012-05-12'
AND o.date_purchased >=  '2012-04-12'
AND ot.class =  'ot_total'

その結果、購入した日付で 10 件の注文を受け取りました。しかし、次の例のように、売上高がない期間内の日数も取得します。

グリッツ・ロン

4

2 に答える 2

0

行が単に存在しない場合、SQL は行を追加しないため、クエリを変更するだけでは、必要なことを行うことはできません。

考えられる解決策は次の 2 つです。

  • 結果を表示するときにアプリケーションのギャップを埋める - 推奨される解決策。
  • ギャップのないすべての日付を含む追加のテーブルを作成し、orders最初にテーブルとの外部結合を作成しますが、この方法では通常は無意味です。
于 2012-05-13T11:13:03.690 に答える
0

このようにしてみてください

$todayDate = date("Y-m-d");
$today = strtotime($todayDate);
$nextmonth =  mktime(0, 0, 0, date("m")+1, date("d"), date("Y"));

次に、クエリでこの変数を使用します

SELECT 
 o.date_purchased,
 round(ot.value,2)
 FROM orders o
 JOIN orders_total ot ON ot.orders_id = o.orders_id
 WHERE o.date_purchased <=  $today
 AND o.date_purchased >=  $nextmonth
 AND ot.class =  'ot_total'

間も使用できます。

SELECT 
 o.date_purchased,
 round(ot.value,2)
 FROM orders o
 JOIN orders_total ot ON ot.orders_id = o.orders_id
 WHERE ot.class =  'ot_total'
 AND o.date_purchased  BETWEEN $today AND $nextmonth 
于 2012-05-13T11:00:24.180 に答える