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

时间:2014-03-13 10:18:19

标签: sql ms-access

我已经在数据库工作了很长一段时间,记录并跟踪我们公司集团的培训。我正处在一个我对它感到满意的阶段,并且会说它足够接近并完成它。

我有几个查询产生的报告只显示每个员工每个课程的最新培训记录,到期培训以及所有具有某些培训类型的员工,但是我无法找到如何生成查询,显示不这样做的员工有一定的培训。

我将用于此的表格是员工信息,培训记录,课程ID:

员工信息表:

  

Emp ID |名字|姓氏|等等。

培训记录表:

  

记录ID | Emp ID |课程编号|等等。

课程ID表

  

课程编号|课程名称

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

我想知道你怎么能提出一个查询,它会显示所有没有接受某种培训的员工,因为他们从未完成过课程,或者因为它已经过时了。我有一个查询只会带来最新的每个训练记录,所以我猜我会使用该查询来帮助。

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

非常感谢

克莱尔

2 个答案:

答案 0 :(得分:0)

您使用 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)
)

答案 1 :(得分:0)

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