Php Mysql如果不存在,返回0

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

我有一个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       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