【问题标题】:How to produce a query that will bring up a list of employees who do not have specific training.如何生成一个查询,该查询将显示未受过特定培训的员工列表。
【发布时间】:2014-03-13 10:18:19
【问题描述】:

我从事数据库工作已经有一段时间了,该数据库记录并跟踪我们集团公司应进行的培训。我正处于一个我对它感到满意的阶段,并且会说它在条款和制作方面已经足够完整了。

我有几个查询生成的报告仅显示每个员工的每门课程的最新培训记录、适当的培训以及所有接受过某些类型培训的员工,但是我不知道如何生成一个查询来显示没有培训的员工有一定的训练。

我将使用的表格是员工信息、培训记录、课程 ID:

员工信息表:

员工 ID |名字 |姓氏 |等等。

培训记录表:

记录 ID |员工 ID |课程编号 |等等。

课程 ID 表

课程编号 |课程名称

因此,每个员工都可以拥有所有不同类型课程的多个培训记录,并且可以拥有同一课程的多个记录。

我想知道如何进行查询,以显示所有未接受过某种类型培训的员工,因为他们从未完成过课程,或者因为课程已过时。我有一个查询,它只会显示每个培训记录的最新信息,所以我猜我会使用该查询来提供帮助。

如果有人能对这个问题有所了解,那就太好了,我已经尝试了几个星期,但仍然没有任何结果。

非常感谢

克莱尔

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    你可以使用EXIST关键字

    Select EMP.* from Employee EMP
    Where NOT EXIST
    (
       Select TR.Emp_ID from Training_Record TR where 
       TR.Emp_ID = EMP.Emp_ID
       -- AND TR. Course_ID = (some data)
    )
    

    【讨论】:

      【解决方案2】:

      如果您还没有,请从培训表中查询所选课程和当前日期。然后,您可以在员工表和此查询之间使用外连接来创建另一个查询,包括所有员工和培训记录查询中的任何匹配记录,然后在培训表中的任何字段中选择 null。这将列出所有未接受指定培训的员工。

      【讨论】:

        猜你喜欢
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-25
        • 2020-01-30
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多