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 天前和今天之间的日期,并为每个日期返回一行。

于 2012-09-30T08:56:11.670 回答