2016-04-18 36 views
0

在mysql中,我创建了一个查询,我想要获取每个日期的最后一个月数据,并且如果没有找到特定日期的记录,那么它应该显示0 。如果在特定日期没有找到记录,我想显示0

我的MySQL查询是从testviewaudit内部联接tmtests上 testviewaudit.testid = tmtests.tsid其中DATE

SELECT SUM(testviewaudit.action = 1)AS视图, DATE(testviewaudit.datetime) (testviewaudit.datetime) BETWEEN NOW() - INTERVAL 30 DAY AND NOW()group by DATE(testviewaudit.datetime) order by DATE(testviewaudit.datetime) asc;

以及我已经使用这个也但没有成功

选择IFNULL从testviewaudit内(SUM(testviewaudit.action = 1),0)AS视图, DATE(testviewaudit.datetime)加入tmtests在 testviewaudit.testid = tmtests.tsid其中,DATE(testviewaudit.datetime) asc;

仍然得到同样的结果

+0

什么是“相同的结果”? – Stultuske

+0

我想查看日期84 \t 2016-03-30 2016-03-31 0 \t 2016-03-31基本上我想0如果没有找到记录 –

+0

好的,可以重新翻译一下:请告诉我们发生了什么事? – Stultuske

回答

0

试试这个:

select if(is null(testviewaudit.action), 0 , sum(testviewaudit.action=1)) AS view, 
DATE(testviewaudit.datetime) from testviewaudit inner join tmtests on testviewaudit.testid=tmtests.tsid 
where DATE(testviewaudit.datetime) BETWEEN NOW() - INTERVAL 30 DAY AND NOW() group by DATE(testviewaudit.datetime) order by DATE(testviewaudit.datetime) asc; 
0

尝试把整个查询在IFNULL。

SELECT IFNULL((SELECT field1 FROM table WHERE id = 1) ,'not found'); 
+0

我一样说,这里是我的查询SELECT IFNULL((从testviewaudit内选择总和(testviewaudit.action = 1)来看, \t \t \t \t DATE(testviewaudit.datetime)加入tmtests上testviewaudit.testid = tmtests.tsid (testviewaudit.datetime)BETWEEN NOW() - INTERVAL 30 DAY AND NOW()组by DATE(testviewaudit.datetime)),'not found');但是仍然没有记录不存在 –

+0

用0替换'未找到' – Eritrean

相关问题