数据库
首页 > 数据库> > php-如果没有匹配返回日期,则按日期选择MYSQL SELECT SUM()

php-如果没有匹配返回日期,则按日期选择MYSQL SELECT SUM()

作者:互联网

我已经将三个表相互连接.
我正在查询关键字统计信息.

我需要按日期范围获取数据,并且
如果没有该特定日期范围内的数据
我希望它返回0统计信息

可以说我的查询是:
SELECT关键字,SUM(stat)FROM关键字WHERE date> =’2012-07-10’GROUP BY关键字;
它会回来
|我的关键字1 | 3 |
|我的关键字2 | 6 |
表格内容示例:
| id |关键字| stat |日期| keywordGroup |
| 1 ||我的关键字1 | 2 | 2012-07-11 | 1 |
| 2 ||我的关键字1 | 1 | 2012-07-12 | 1 |
| 3 ||我的关键字2 | 6 || 2012-07-11 | 1 |
| 4 ||我的关键字3 | 10 | 2012-07-09 | 1 |
但是有些关键字在该日期范围内没有统计信息
但我仍然希望获得那些将统计信息显示为0的关键字.像这样:

|我的关键字1 | 3 |
|我的关键字2 | 6 |
|我的关键字3 | 0 |
问题是where子句会阻止找不到的值,是否有解决方法.正如我所说的,我有三个具有关联关系的表,所以我使用LEFT JOIN来
查询数据,为简化起见,我在示例查询中省略了这一部分.

表格:广告活动
ID
名称

表格:KeywordGroup
ID
名称
运动

表格:KeywordData
ID
关键词
统计
日期
keywordGroup

解决方法:

假设您正在正确连接左连接的表,请使用:

select keyword, ifnull(sum(stat),0) ... group by keyword

如果是WHERE子句在应用偶数分组之前过滤掉了一些统计信息,那么您需要将日期条件移到LEFT JOIN条件,即.

from KeywordGroup left join KeywordData on ... and date > '2012-07-10'

但如果看不到实际查询,我将无能为力.

标签:sum,where,mysql,php,group-by
来源: https://codeday.me/bug/20191201/2077923.html