Php Mysql如果不存在,返回0
我有一个mysql表,如下所示:Php Mysql如果不存在,返回0,php,mysql,sql,Php,Mysql,Sql,我有一个mysql表,如下所示: date data 01-01-2005 10 | 02-01-2005 11| 03-01-2005 13| 07-01-2005 20| 我怎样才能像下面这样列出 date data: 01-01-2005 10| 02-01-2005 11| 03-01-2005 13| 04-01-2005 0| 05-01-2005
date data
01-01-2005 10 |
02-01-2005 11|
03-01-2005 13|
07-01-2005 20|
我怎样才能像下面这样列出
date data:
01-01-2005 10|
02-01-2005 11|
03-01-2005 13|
04-01-2005 0|
05-01-2005 0|
06-01-2005 0|
07-01-2005 20|
编辑:我使用如下日历表:
date:
01-01-2005 for all 365 days.
这是我的最佳意见,但它不起作用:
SELECT c.steps, IFNULL(c.steps, 0) value, r.calendar_date
FROM log_activities c
LEFT JOIN calendar r
ON (r.calendar_date = c.date_logged)
WHERE email = 'a@mail.com'
ORDER BY c.date_logged DESC
尝试:
通过编写查询。向我们显示您尝试过的查询。搜索日历表。同时添加一个查询,无论错误有多大。显示一些努力。更新。请发表评论@Mihai会尝试@Mihai链接的内容,我还会考虑如何向表中添加数据。你应该考虑每天播种,即使它的数据量为0。你能举个例子吗?你确定每个月的第一天确实在日历上吗?(您希望显示但日志上没有记录的月份)。我也不知道你的电子邮件地址标准是否是一个例子a@mail.com是的,我改变了电子邮件地址,删除了substr,然后得到了相同的结果。但是仍然缺少此结果。(不添加任何0的日期)我必须查看日历表。查询应显示日历表中的所有日期(仅显示当月第一天的日期),如果日志活动表中的日期相同,则应显示适用的数据。没有返回行的事实表明日历表不包含该范围内的日期。是的,我有一些行在此范围内。我的日历表只有一行,如下所示:01-01-2005 02-01-2005 03-01-2005。。。27-12-2006@erdinc我只是加载了一些示例数据来测试这里的查询:它似乎按照预期工作,我会仔细检查源数据。
SELECT c.steps, IFNULL(c.steps, 0) value, r.calendar_date
FROM log_activities c
right JOIN calendar r
ON r.calendar_date = c.date_logged
WHERE email = 'a@mail.com'
and substr(r.calendar_date, 4, 2) = '01'
and r.calendar_date between
(select min(date_logged) from log_activities) and
(select max(date_logged) from log_activities)
ORDER BY c.date_logged DESC