如何内部加入我的calendar_table以获取完整的日历日期+来自other_table的查询结果

时间:2014-08-03 19:25:34

标签: mysql

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

这不起作用我不知道如何将结果置于任何想法之上?

1 个答案:

答案 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);

SQL DEMO FIDDLE