2016-12-14 36 views
0

我試圖在MS Access中創建一個SQL查詢,它將顯示一個員工在當月有多少約會,即使它是0.它非常類似於this問題,但我無法讓它與WHERE子句一起工作。SQL - 顯示計數的記錄,即使0

我有3個表:

tblEmployees 
-employeeID PK 
-FirstName ETC 

tblEngineersAppts1 
-ApptID PK 
-EmployeeID* 

tblEngineersAppts2 
-DiaryID PK 
-ApptDate 
-ApptID* 

我想告訴所有的員工,所有的約會(DiaryID)在tblEngineersAppts2即使有沒有哪裏ApptDate是當月的計數。 這是我的查詢,它只顯示當前月份有約會的員工,並不顯示沒有約會的員工。

SELECT tblEmployees.EmployeeID, Count(tblEngineersAppts2.DiaryID) AS CountOfDiaryID 
FROM (tblEmployees 
LEFT JOIN tblEngineersAppts1 ON tblEmployees.EmployeeID = tblEngineersAppts1.EmployeeID) 
LEFT JOIN tblEngineersAppts2 ON tblEngineersAppts1.ApptID = tblEngineersAppts2.ApptID 
WHERE (((Format$([ApptDate],'MM/YY'))='03/17')) 
GROUP BY tblEmployees.EmployeeID; 

感謝

+0

向我們展示樣本數據和預期輸出。 \t請閱讀[**如何提問**](http://stackoverflow.com/help/how-to-ask) \t \t這裏是一個偉大的地方[** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)來了解如何提高您的問題質量並獲得更好的答案。 –

回答

2

問題是,當你把WHERE條件你做出LEFT JOININNER JOIN

WHERE (((Format$([ApptDate],'MM/YY'))='03/17')) 

所以包括ApptDate建設不適用於ON條件。

SELECT tblEmployees.EmployeeID, Count(tblEngineersAppts2.DiaryID) AS CountOfDiaryID 
FROM (tblEmployees 
LEFT JOIN tblEngineersAppts1 ON tblEmployees.EmployeeID = tblEngineersAppts1.EmployeeID) 
LEFT JOIN tblEngineersAppts2 
    ON ( tblEngineersAppts1.ApptID = tblEngineersAppts2.ApptID 
    AND Format$([ApptDate],'MM/YY')='03/17' 
    ) 
GROUP BY tblEmployees.EmployeeID; 
+0

嗨,這給了我一個錯誤「不支持連接表達式」。應該提到即時通訊使用MS Access。 – user2435645

+1

是的,你應該。 :(...但看起來像只需要添加括號。在這裏檢查http://www.access-programmers.co.uk/forums/showthread.php?t=242171並讓我知道。 –

+0

我幾乎在那裏。我可以根據需要顯示結果,但是當我嘗試在設計視圖中顯示時,我一直在Access中出現錯誤。這與Google的括號鏈接在一起。錯誤是「...不能表示連接表達式tblEngineersAppts1。 ApptID = tblEngineersAppts2.ApptID和格式設計視圖中的$([ApptDate],'MM/YY')= '03/17' – user2435645

1

我想你可以做這樣的事情:

SELECT 
    tblEmployees.EmployeeID, 
    (
     SELECT Count(tblEngineersAppts2.DiaryID) 
     FROM tblEngineersAppts1 
     JOIN tblEngineersAppts2 ON tblEngineersAppts1.ApptID = tblEngineersAppts2.ApptID 
     WHERE tblEmployees.EmployeeID = tblEngineersAppts1.EmployeeID 
     AND (((Format$([ApptDate],'MM/YY'))='03/17')) 
    ) AS CountOfDiaryID 
FROM 
    tblEmployees