如何仅在 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 中的日期字段,连接箭头指向 qAllDatesAllEmpqDailyWorkEmp。我还将 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