我有这张桌子:

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.

09-30 14:23
查看更多