-1

「orders」というデータベースで毎日の売上統計を生成する必要があり、そのフィールドの 1 つは「date」(DATETIME) と呼ばれます。

私のクエリは非常に単純です。

SELECT DAY(date) , COUNT(id_order)
FROM z_view_order_list
WHERE WEEK(date) = WEEK(NOW())
GROUP BY DAY(date)
LIMIT 7

問題は、たとえば昨日売上がなかった場合、昨日は結果に表示されないことですが、0 の値で表示する必要があります。

私の実際の結果 (日/売上) の例: 27/3、29/4、30/2 必要な結果 (日/売上) の例: 27/3、28/0、29/4、30/2、 31/0

前もって感謝します!

4

1 に答える 1

0

calendarすべての日を含むテーブルを作成し、このカレンダーのテーブルに参加してください。

そのカレンダーテーブルを作成する方法:

http://www.richnetapps.com/using-mysql-generate-daily-sales-reports-filled-gaps/

それから

SELECT Day(c.cal_date), COALESCE(COUNT(z.id_order), 0)
FROM calendar c
LEFT JOIN z_view_order_list z ON z.date = c.cal_date
WHERE WEEK(c.cal_date) = WEEK(NOW())
GROUP BY DAY(c.cal_date)
LIMIT 7

今日のアドバイス

フィールドの名前として Date を使用しないでください。日付は関数の一種です。混乱を避けるようにしてください...

于 2013-05-31T08:34:11.707 に答える