2015-10-06 51 views
0

我試圖使用日曆表,但我的查詢仍然顯示日期間隙在我的記錄中,我的內部連接是錯誤的嗎?這裏是我的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

以及INNER JOIN在您的查詢中? – DarkKnight

+0

我試了左連接,但結果相同。 –

回答

1

你RIGHT JOIN保持每行的attendance表,但在你的cal表中刪除不匹配的作用。

你想要一個左加入,所以你可以保持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 
+0

我試了左連接,但結果相同。 –

+0

我在你的查詢中遺漏了一些東西。請檢查我的編輯。 –

+0

謝謝你的工作..你幫了我很多。 –