我已经在数据库工作了很长一段时间,记录并跟踪我们公司集团的培训。我正处在一个我对它感到满意的阶段,并且会说它足够接近并完成它。
我有几个查询产生的报告只显示每个员工每个课程的最新培训记录,到期培训以及所有具有某些培训类型的员工,但是我无法找到如何生成查询,显示不这样做的员工有一定的培训。
我将用于此的表格是员工信息,培训记录,课程ID:
员工信息表:
Emp ID |名字|姓氏|等等。
培训记录表:
记录ID | Emp ID |课程编号|等等。
课程ID表
课程编号|课程名称
因此,每个员工都可以拥有所有不同类型课程的培训记录,并且可以为同一课程提供多个记录。
我想知道你怎么能提出一个查询,它会显示所有没有接受某种培训的员工,因为他们从未完成过课程,或者因为它已经过时了。我有一个查询只会带来最新的每个训练记录,所以我猜我会使用该查询来帮助。
如果有人能够对这个问题有所了解,那就太好了,我已经尝试了几个星期但仍然没有任何地方。
非常感谢
克莱尔
答案 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。这将列出所有没有指定培训的员工。