如何使用日历表填充日期空白

时间:2015-10-06 01:35:42

标签: php mysql calendar

我尝试使用日历表,但我的查询仍然显示我的记录中的日期空白,我的内部联接是否错误?这是我的mysql查询:

SELECT c.dt,a.TimeIn,a.LunchOut,a.LunchIn,a.TimeOut FROM cal c 
RIGHT JOIN attendance a ON a.ValidDate = c.dt WHERE c.dt BETWEEN DATE('2015-01-01') 
AND DATE('2015-01-30') AND a.EmpID = '01409159'

1 个答案:

答案 0 :(得分:1)

您的RIGHT JOIN会保留attendance表格中的每一行,但会在您的cal表格中删除不匹配的角色。

您想要LEFT JOIN,因此您可以保留cal表中的每一行。此外,您的a.col = value WHERE子句将LEFT JOIN转换为INNER JOIN。尝试将a.EmpID上的选择性从WHERE子句移动到ON子句。

此外,您应该使用>=<而不是BETWEEN来处理日期范围,因为BETWEEN有时会弄乱日期范围的结尾。

SELECT c.dt, 
       a.TimeIn, a.LunchOut, a.LunchIn, a.TimeOut
  FROM cal c 
  LEFT JOIN attendance a ON a.ValidDate = c.dt AND a.EmpID = '01409159'
 WHERE c.dt >= '2015-01-01'
   AND c.dt <  '2015-01-01' + INTERVAL 1 MONTH