【发布时间】:2018-01-30 05:11:56
【问题描述】:
这个问题自从我最初发布以来已经更新,感谢最初的回答者的帮助,我已经取得了一些进展,但仍然不完全在那里,无法弄清楚以下内容。
我有一个分配了角色的员工列表。每卷都需要完成一组不同的培训。会话以输入到名为“TrainingSessions”的表的形式记录。我想从“员工”表中获取姓名列表,并将其与“TrainingSessions”中的出勤率进行比较,并输出未参加所需培训课程的人员列表。
我已成功创建了一个查询,该查询提取员工姓名(和相关 ID)并将其与分配给他们的角色所需的培训一起列出。
SELECT Employees.ID, Employees.LastName, Employees.FirstName, Trainings.ID, Trainings.TrainingTitle
FROM (EmployeeRoles INNER JOIN Employees ON EmployeeRoles.ID = Employees.Role) INNER JOIN Trainings ON EmployeeRoles.ID = Trainings.RequiredFor.Value
GROUP BY Employees.ID, Employees.LastName, Employees.FirstName, Trainings.ID, Trainings.TrainingTitle, Employees.Resignation
HAVING (((Employees.Resignation) Is Null));
我还创建了一个查询,将 TrainingSessions 展平,以便每个与会者都列在自己的行上。
SELECT TrainingSessions.TrainingTitle AS Title, TrainingSessions.SessionDate AS [Date], TrainingSessions.Attendance.Value AS Who, DateAdd("yyyy",[Trainings]![YearsValid],[SessionDate]) AS Due
FROM Trainings INNER JOIN TrainingSessions ON Trainings.ID = TrainingSessions.TrainingTitle
ORDER BY TrainingSessions.SessionDate;
我现在需要弄清楚如何将所需的培训与已完成的培训进行比较,并列出尚未完成特定培训的员工名单。到目前为止,我能得到的最接近的结果是列出了每个员工所需的培训列表,这些培训从未参加过会议,而不是特定员工没有参加过的培训。
以下是我的数据库现在的一些图片:
【问题讨论】:
-
你能展示你开始使用的三个表吗?由此,您应该能够准备所需培训和已完成培训的列表,然后比较这两个列表。看看你到目前为止所拥有的会有所帮助。
-
尝试使用 Access 查询生成器查找不匹配的查询向导。
-
我在问题中添加了表格的图片。我知道其中两个表具有多值查找字段,但我想不出办法。
标签: ms-access