3

以下を使用して、過去 7 日間に追加された製品の数を表示しています... COUNT=0 の場合でも、クエリを調整して過去 7 日間すべてを表示することはできますか?

そのままのクエリ:

SELECT DAYNAME(dateadded) DAY, COUNT(*) COUNT 
FROM `products` 
WHERE (`dateadded` BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE() && site_url = 'mysite.com') 
GROUP BY DAY(dateadded)
4

1 に答える 1

1

日付を含むテーブル (日付ルックアップ テーブル) を追加してから、次の操作を行います。

SELECT DAYNAME(d.FullDate) DAY, COUNT(*) COUNT
FROM dates d
LEFT OUTER JOIN products p ON d.FullDate = DATE(p.dateadded) 
    AND p.site_url = 'mysite.com'
WHERE d.FullDate BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()    
GROUP BY d.FullDate

はい、少しストレージが必要ですが、このようなクエリがはるかに簡単になります。

または、7 日前から今日までの日付をループし、それぞれに対して 1 つの行を返すストアド プロシージャを作成することもできます。

于 2012-09-30T08:56:11.670 に答える