sql - MS Access SQL 员工培训数据库
问题描述
我有一个 Microsoft Access 数据库,用于跟踪员工培训。
该数据库有三个表:
tblEmployees(EmployeeID, Name, Function)
tblTraining_Courses(CourseID, Title, Desc, Function)
tblTraining_Records(EmployeeID, CourseID, Date, Status)
EmployeeID 是他们的人员编号
Name 是员工的姓名
Function 是员工支持的产品线 - Electric、Lighting 或 Both(多值查找)
CourseID 是课程的 ID 号
Status 是课程是否已完成
我正在尝试查询“tblTraining_Records”表以查看哪些员工尚未完成培训课程。
我按照此处发布的另一个示例进行操作,效果非常好:Stackoverflow: MS Access SQL Course not Taken Example
但是,我还想根据员工功能是否与课程功能匹配来过滤该查询。该函数是一个多值查找字段,具有三个可能的选项电气、照明或两者。课程也可以只针对电气、照明或两者。
这是我用于查询的 SQL。
SELECT nested.EmployeeID, nested.Course_ID
FROM (SELECT distinct EmployeeID, Course_ID FROM tblEmployees, tblTraining_Courses) nested
LEFT JOIN tblTraining_Records r ON r.EmployeeID = nested.EmployeeID AND r.Course_ID = nested.Course_ID
WHERE r.Employee is NULL;
任何帮助将不胜感激。谢谢
解决方案
我将添加这种方法:(让我们称之为 Query1)当您加入所有 3 个表并拥有查询中的所有字段时 - 您将拥有 2 个名为 Function 的字段。这是不允许的,所以让我们将其别名为 eFunction for employee 和 cFunction for course。
然后创建一个计算字段: Completed: iif(cFunction = eFunction, "Yes", Null)
那么您可以在 Yes 上过滤 Query1
推荐阅读
- r - 用 dplyr 函数计算
- python - 如何在 VSCode 中加载 Python 交互窗口时运行启动命令
- opengl - GLSL 中是否可以进行可变参数宏扩展?
- c# - Bogus C# - 如何在不为每个属性列出 RuleFor 的情况下获得完全随机的对象?
- powershell - 如何在 My Ansible Playbook 中使用 Azure DevOps 服务器 (TFS) 预定义变量?
- c - 只有当我包含 .c 文件时,C 代码才会编译
- r - 如何在 packageVersion 之后以字符串形式获取完整版本?
- java - 参数 [frmStartupGame] 的非法修饰符;只允许final
- javascript - 什么节点js在等待响应时返回给客户端?
- node.js - 使用电子打包器打包后如何在linux中运行电子应用程序