即使为空也显示值

时间:2012-09-30 08:52:31

标签: mysql sql

我使用以下内容显示过去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)

1 个答案:

答案 0 :(得分: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天前和今天之间的日期,并为每个日期返回一行。