我有这张桌子:
DATE ENGINEERS
----------------------
2014-03-06 6
2014-03-10 7
当工程师人数变化时我在其中注册。例如,在这种情况下,我有6名工程师,但是3月10日,我又雇用了1名工程师,所以从那时起,我有7名工程师。
我每天都有一张桌子和约会
DATE APPOINTMENTS
-------------------------
2014-03-06 4
2014-03-07 5
2014-03-10 5
2014-03-11 6
我怎样才能得到这样一个视图,它将约会和每天的工程师数量结合在一起?
DATE APPOINTMENTS ENGINEERS
--------------------------------------
2014-03-06 4 6
2014-03-07 5 6
2014-03-10 5 7
2014-03-11 6 7
最佳答案
这是我可以做的:
SELECT t2.at, t2.appointments, (@n := IFNULL(t1.engineers, @n)) FROM t2
LEFT JOIN (
SELECT t.at, t1.engineers
FROM t1
JOIN t2 t ON t1.at = t.at
) t1 ON t1.at = t2.at;
我敢肯定那里还有更好的东西,因为不需要redondant
JOIN
,但是我找不到它。如果Engineers表中没有相应的条目,它实际上使用sql变量来获取最后一个值。
不要忘记运行
SET @n = 0;
。The corresponding sqlfiddle.