我有员工和时间卡表。当员工点击“time in”按钮时,日期时间(UTC)将保存在Timecard表中。我已经可以使用以下查询检索员工:
SELECT emp.id, emp.Firstname, emp.Lastname
FROM Employees emp
WHERE emp.Id NOT IN (SELECT ti.EmployeeId
FROM TimeCards ti
WHERE ti.[Date] BETWEEN '2018-04-22 16:00:00' AND '2018-04-23 15:59:00')
但问题是,我还需要在Timecard表中包含日期时间,因此输出应为:EmployeeId,Firstname,Lastname,TimeCardDate。另外,我需要按日期范围(例如4月19日 - 4月23日)获取记录
你能帮我找到解决方法吗?感谢
答案 0 :(得分:0)
您可以使用join:
SELECT e.id, e.Firstname, e.Lastname, t.TimeCardDate
FROM Employees e JOIN TimeCards t
ON e.id = t.EmployeeId
AND t.[Date] NOT BETWEEN '2018-04-19 16:00:00' AND '2018-04-23 15:59:00'
答案 1 :(得分:0)
我理解你的问题,你想加入这两个表,让员工和他们的时间进入"。像下面这样的东西应该做。
SELECT emp.id,
emp.Firstname,
emp.Lastname,
ti.Date
FROM Employees emp
INNER JOIN TimeCards ti
ON ti.EmployeeId = emp.Id
WHERE ti.Date BETWEEN '2018-04-22 16:00:00' AND '2018-04-23 15:59:00';
答案 2 :(得分:0)
我认为你需要的是一个LEFT JOIN,它将带来employee表的所有记录和时间表的匹配记录。那么,如果缺席的员工,您将获得NULLS。
trans -e google -s fr -t en -show-original y -show-original-phonetics n -show-translation y -no-ansi -show-translation-phonetics n -show-prompt-message n -show-languages y -show-original-dictionary n -show-dictionary n -show-alternatives n "%GDWORD%"