我有一个表“calendar_table”,其中设置了完整的日历日期:
dt
--------------------------
2014-07-09
2014-07-10
2014-07-11
2014-07-12
2014-07-13
2014-07-14 etc.....
我有另一个表“活动”列:
aveHR duration date
------------------------------
74 91 2014-08-02
59 25 2014-07-31
59 27 2014-07-28
59 27 2014-07-25
59 27 2014-07-22
我想加入我的calendar_table以获取完整的连续日期范围,以填写其他日期中的缺失日历日期(第一个值(2014-07-22)到最后一个值(2014-08-02))
如果我跑:
SELECT aveHR, duration, date FROM `activity`
我明白了:
74 91 2014-08-02
59 25 2014-07-31
59 27 2014-07-28
59 27 2014-07-25
59 27 2014-07-22
我想要实现的是连续的每日日期:2014-07-22至2014-08-02。 I.E. 2014-07-22,2014-07-23,2014-07-24,2014-07-26,2014-07-27,2014-07-28,2014-07-29,2014-07-30,2014- 07-31,2014-08-01,2014-08-02
“活动”的匹配日期显示aveHR和持续时间的相应数据,而与此不匹配的日期仅显示日期。
SELECT aveHR, duration, date, calendar.dt FROM `activity`
INNER JOIN calendar
ON activity.date WHERE date BETWEEN "first and last date from activity.date"
这不起作用我不知道如何将结果置于任何想法之上?
答案 0 :(得分:2)
您可以尝试使用LEFT JOIN
。类似的东西:
SELECT cal.dt, aveHR, duration, date FROM calendar cal
LEFT JOIN `activity` act ON act.date = cal.dt
WHERE dt BETWEEN
(SELECT MIN(date) FROM activity)
and (SELECT MAX(date) FROM activity);