我已经将三个表彼此连接起来。 我在查询关键字+统计信息。MYSQL SELECT SUM()BY DATE IF NO MATCH RETURN 0
我需要得到的数据进行按日期范围,并 如果没有数据对于特定日期范围 我想它返回0统计
比方说我的查询是:
SELECT关键字, SUM(stat)FROM keywords WHERE date> ='2012-07-10'GROUP BY关键字;
这将返回
| my keyword 1 | 3 |
| my keyword 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作为统计信息。
像这样:
| my keyword 1 | 3 |
| my keyword 2 | 6 |
| my keyword 3 | 0 |
问题是where子句阻塞未找到的值,是否有解决方法。
正如我所说我有三个关系表,我使用LEFT JOIN到 查询数据,为了简化,我将这部分留在了我的示例查询中。
表:广告系列
ID
名
表:KeywordGroup
ID
名
活动
表:KeywordData
ID
关键字
统计
日期
keywordGroup
SELECT关键字,SUM(STAT)从左路JOIN keywordGroup ON campaigns.id = keywordGroup活动。活动LEFT JOIN keywordData ON keywordGroup.id = keywordData.keywordGroup WHERE keywordData.date> ='2012-07-10'GROUP BY关键字 – Jompper 2012-07-16 13:06:50
数据每天都会被插入到keywordData表中,可以说我每天都会记录Google关键字访问,如果该关键字当天没有访问,则不会插入任何数据。我仍然需要获得在我的日期范围内访问次数为0次的关键字。嗯,也许我可以像WHERE MAX(日期)<='2012-07-09' – Jompper 2012-07-16 13:12:42
分开查询那些好,我在这里看到一个不同的问题。唯一的地方,实际关键字文本保存在“keywordData”表中的“关键字”列吧? – 2012-07-16 13:13:50