如何仅在 MS Access 2010 查询中显示所有员工缺勤日期?
How to show all employees absent dates only in MS Access 2010 query?
我想要一个查询,它只显示那些在不同日期缺勤的员工的记录。
我在 MS Access 2010 中有两个查询。一个是 qAllDatesAllEmp,它包含所有员工的所有月度日期。其次是 qDailyWorkEmp,它按日期显示员工的工作情况。现在,假设 Emp1 只缺少一个日期 5-Jan-2019
; emp2 缺少 15-Jan-2019
等等,结果应该只显示这些带有员工姓名的缺失日期。到目前为止我已经尝试过的是我已经将日期字段从 qAllDatesAllEmp 加入到 qDailyWorkEmp 中的日期字段,连接箭头指向 qAllDatesAllEmp 到 qDailyWorkEmp。我还将 qDailyWorkEmp 中的日期字段添加到下面的查询网格中,但删除了复选标记。当我 运行 这个查询时,它给出了空白结果。我非常欢迎专家们就如何在下面获得所需的输出提供帮助。
我的示例数据:
Query1: qAllDatesAllEmp contains {WorkDate; empID; empName; CityBased}
Query2: qDailyWorkEmp contains {DailyDate; empID; empName; CityBased}
为此SQL如下:
SELECT qDailyWorkEmp.empID, qDailyWorkEmp.empName, qDailyWorkEmp.CityBased
FROM qAllDatesAllEmp LEFT JOIN
qDailyWorkEmp
ON qAllDatesAllEmp.WorkDate = qDailyWorkEmp.DailyDate
WHERE (((qDailyWorkEmp.DailyDate) Is Null));
我想要的输出:
empID; EmpName; MissingDate
001; ABC; 5-Jan-2019
007; LMN; 15-Jan-2019
...and so on
根据我从你的问题中收集到的信息,你的 left join
查询似乎走在了正确的轨道上,但是,由于你的 qAllDatesAllEmp
查询包含主数据,你应该输出来自此查询的数据,用于在您的 qDailyWorkEmp
查询中对应值为 null 的记录。
您在这一行的查询中似乎也有拼写错误:
qAllDatesAllEmp.WhatDate = qDailyWorkEmp.DailyDate
正如您在问题中所述,查询 qAllDatesAllEmp
包含以下字段:
Query1: qAllDatesAllEmp contains {WorkDate; empID; empName; CityBased}
WhatDate
不是这些字段之一。
您还需要在两个查询中加入 empID
字段,以便您在 每个员工 的基础上比较日期字段,而不是将每个日期与 所有 员工的日期进行比较 - 因此您的加入标准应该是:
qAllDatesAllEmp LEFT JOIN qDailyWorkEmp ON
qAllDatesAllEmp.WorkDate = qDailyWorkEmp.DailyDate AND
qAllDatesAllEmp.empID = qDailyWorkEmp.empID
根据所提供的信息,我可能会提出以下建议:
SELECT
qAllDatesAllEmp.empID,
qAllDatesAllEmp.empName,
qAllDatesAllEmp.CityBased
qAllDatesAllEmp.WorkDate as MissingDate
FROM
qAllDatesAllEmp LEFT JOIN qDailyWorkEmp ON
qAllDatesAllEmp.WorkDate = qDailyWorkEmp.DailyDate AND
qAllDatesAllEmp.empID = qDailyWorkEmp.empID
WHERE
qDailyWorkEmp.DailyDate IS NULL
我想要一个查询,它只显示那些在不同日期缺勤的员工的记录。
我在 MS Access 2010 中有两个查询。一个是 qAllDatesAllEmp,它包含所有员工的所有月度日期。其次是 qDailyWorkEmp,它按日期显示员工的工作情况。现在,假设 Emp1 只缺少一个日期 5-Jan-2019
; emp2 缺少 15-Jan-2019
等等,结果应该只显示这些带有员工姓名的缺失日期。到目前为止我已经尝试过的是我已经将日期字段从 qAllDatesAllEmp 加入到 qDailyWorkEmp 中的日期字段,连接箭头指向 qAllDatesAllEmp 到 qDailyWorkEmp。我还将 qDailyWorkEmp 中的日期字段添加到下面的查询网格中,但删除了复选标记。当我 运行 这个查询时,它给出了空白结果。我非常欢迎专家们就如何在下面获得所需的输出提供帮助。
我的示例数据:
Query1: qAllDatesAllEmp contains {WorkDate; empID; empName; CityBased}
Query2: qDailyWorkEmp contains {DailyDate; empID; empName; CityBased}
为此SQL如下:
SELECT qDailyWorkEmp.empID, qDailyWorkEmp.empName, qDailyWorkEmp.CityBased
FROM qAllDatesAllEmp LEFT JOIN
qDailyWorkEmp
ON qAllDatesAllEmp.WorkDate = qDailyWorkEmp.DailyDate
WHERE (((qDailyWorkEmp.DailyDate) Is Null));
我想要的输出:
empID; EmpName; MissingDate
001; ABC; 5-Jan-2019
007; LMN; 15-Jan-2019
...and so on
根据我从你的问题中收集到的信息,你的 left join
查询似乎走在了正确的轨道上,但是,由于你的 qAllDatesAllEmp
查询包含主数据,你应该输出来自此查询的数据,用于在您的 qDailyWorkEmp
查询中对应值为 null 的记录。
您在这一行的查询中似乎也有拼写错误:
qAllDatesAllEmp.WhatDate = qDailyWorkEmp.DailyDate
正如您在问题中所述,查询 qAllDatesAllEmp
包含以下字段:
Query1: qAllDatesAllEmp contains {WorkDate; empID; empName; CityBased}
WhatDate
不是这些字段之一。
您还需要在两个查询中加入 empID
字段,以便您在 每个员工 的基础上比较日期字段,而不是将每个日期与 所有 员工的日期进行比较 - 因此您的加入标准应该是:
qAllDatesAllEmp LEFT JOIN qDailyWorkEmp ON
qAllDatesAllEmp.WorkDate = qDailyWorkEmp.DailyDate AND
qAllDatesAllEmp.empID = qDailyWorkEmp.empID
根据所提供的信息,我可能会提出以下建议:
SELECT
qAllDatesAllEmp.empID,
qAllDatesAllEmp.empName,
qAllDatesAllEmp.CityBased
qAllDatesAllEmp.WorkDate as MissingDate
FROM
qAllDatesAllEmp LEFT JOIN qDailyWorkEmp ON
qAllDatesAllEmp.WorkDate = qDailyWorkEmp.DailyDate AND
qAllDatesAllEmp.empID = qDailyWorkEmp.empID
WHERE
qDailyWorkEmp.DailyDate IS NULL