以下是我正在使用的三个表:
这是我正在使用的SQL语句:
SELECT DISTINCT Employees.Corps_ID, Employees.Last_Name, Employees.First_Name, Employees.Home_Phone, Employees.Mobile_Phone
FROM Shifts INNER JOIN (Employees INNER JOIN Employees_Shifts ON Employees.Employee_ID = Employees_Shifts.Employee_ID) ON Shifts.Shift_ID = Employees_Shifts.Shift_ID
WHERE Shifts.Start_Date_Time Between #11/1/2015# And #12/1/2015# And Employees_Shifts.Employee_ID = NULL ;
我真正需要做的查询是检查指定日期范围内的所有班次,并仅返回不匹配的员工记录。
我已尝试在几个地方将INNER运算符更改为LEFT,但Access只是一直抱怨并且不会运行查询。我肯定需要一些帮助。请指教。
答案 0 :(得分:1)
SELECT Employees.Corps_ID, Employees.Last_Name, Employees.First_Name, Employees.Home_Phone, Employees.Mobile_Phone
FROM Employees
WHERE NOT EXISTS(
SELECT * from Employees_Shifts
JOIN Shifts ON Shifts.Shift_ID = Employees_Shifts.Shift_ID
WHERE Shifts.Start_Date_Time Between #11/1/2015# And #12/1/2015#
AND Employees_Shifts.Employee_ID = Employees.Employee_ID
)
Btw DISTINCT经常表明架构或查询存在问题,总是问你为什么需要它。