Sql 如何生成一个查询,该查询将显示未接受特定培训的员工列表。

Sql 如何生成一个查询,该查询将显示未接受特定培训的员工列表。,sql,ms-access,Sql,Ms Access,我已经在一个数据库上工作了相当长的一段时间,该数据库记录并跟踪我们集团公司的培训情况。我正处于一个对它感到满意的阶段,我会说它在术语和实现方面已经足够完整了 我有几个查询,这些查询生成的报告仅显示每个员工每门课程的最新培训记录、到期培训和所有接受过特定类型培训的员工,但我无法找到如何生成显示未接受特定类型培训的员工的查询 我将使用的表格包括员工信息、培训记录、课程ID: 员工信息表: Emp ID |名字|姓氏|等 培训记录表: 记录ID | Emp ID |课程ID |等 课程ID表 课程ID

我已经在一个数据库上工作了相当长的一段时间,该数据库记录并跟踪我们集团公司的培训情况。我正处于一个对它感到满意的阶段,我会说它在术语和实现方面已经足够完整了

我有几个查询,这些查询生成的报告仅显示每个员工每门课程的最新培训记录、到期培训和所有接受过特定类型培训的员工,但我无法找到如何生成显示未接受特定类型培训的员工的查询

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

员工信息表:

Emp ID |名字|姓氏|等

培训记录表:

记录ID | Emp ID |课程ID |等

课程ID表

课程ID |课程名称

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

我想知道你如何能提出一个查询,显示所有没有接受过特定类型培训的员工,因为他们从未参加过该课程或该课程已过时。我有一个查询,它只显示每个训练记录的最新信息,所以我猜我会用这个查询来帮助你

如果有人能解释一下这个问题,那就太好了,我已经试了好几个星期了,但仍然没有找到任何解决办法

非常感谢


克莱尔

你可以使用存在关键字

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)
)

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