mysql - 填充空的 MySQL 结果

标签 mysql group-by mysql5

我想为销售设定一个连续的日期。

SELECT *,
   UNIX_TIMESTAMP(calendar.datefield) * 1000 AS time,
   IFNULL(Sum(mos + mosnk), 0)               AS mosfinal,
   IFNULL(Sum(neukunden), 0)                 AS neukunden
FROM   sms_stats
   RIGHT JOIN calendar
           ON ( DATE(sms_stats.date) = calendar.datefield )
WHERE  calendar.datefield BETWEEN Curdate() - INTERVAL 90 day AND Now()
GROUP  BY Date_format(calendar.datefield, '%Y%m%d') 

这会返回过去 90 天的列表。现在我想过滤它,但如果我这样做

WHERE owner = 2 AND calendar.datefield BETWEEN Curdate() - INTERVAL 90 day AND Now()

它只返回一个结果,而不是日期列表。

最佳答案

where 子句中的条件“撤消”右外连接。解决方案是将条件移至 where 子句。我更喜欢左外连接而不是右外连接,所以我将交换表:

SELECT *,
       UNIX_TIMESTAMP(c.datefield) * 1000        AS time,
       IFNULL(Sum(mos + mosnk), 0)               AS mosfinal,
       IFNULL(Sum(neukunden), 0)                 AS neukunden
FROM calendar c LEFT JOIN
     sms_stats ss
     ON DATE(ss.date) = c.datefield  and
        ss.owner = 2
WHERE c.datefield BETWEEN Curdate() - INTERVAL 90 day AND Now()
GROUP BY Date_format(c.datefield, '%Y%m%d') ;

我添加了表别名以使查询更具可读性。

关于mysql - 填充空的 MySQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22548263/

相关文章:

MySQL GROUP BY 行为(使用带排序依据的派生表时)

mysql - 为什么你会选择在应用层散列密码,而不是使用 mysql SHA2()?

mysql - 如何让 mysql 通过简单的 AND + OR 查询使用索引?

PHP没有错误,但数据未插入数据库

mysql - SQL 查询从多个 tag_id 中选择唯一图像

mysql - 在 MySQL 的同一个表中创建 2 个 AUTO _INCREMENT 列

php - 如何显示 PDO 创建的查询的全文?

sql - 如何在密码查询中创建 GROUP BY?

mysql - 使用多个 "WHERE IN"和 "OR"搜索 MySql 数据库不起作用

mysql - 为什么对行进行排序会减少解释中的行数?