需要SQL语句来返回返回Null的记录

时间:2015-11-26 16:36:02

标签: sql ms-access ms-access-2010

以下是我正在使用的三个表:

enter image description here

这是我正在使用的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只是一直抱怨并且不会运行查询。我肯定需要一些帮助。请指教。

1 个答案:

答案 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经常表明架构或查询存在问题,总是问你为什么需要它。