我有一个员工表和 培训的另一个表。培训表包含 员工已完成的各种培训课程。我们有强制性的安全意识培训,所以每个员工都必须完成这个培训课程。我在运行查询时遇到问题,这会返回所有员工列出的完成培训或未完成的任务。SQL查询一对多关系
例Employee表
╔════╦══════╗
║ ID ║ NAME ║
╠════╬══════╣
║ 1 ║ Bob ║
║ 2 ║ Tom ║
║ 3 ║ John ║
╚════╩══════╩
实例训练表
╔════╦══════════════╦════════════════════╗
║ ID ║ DEPARTMENT_ID║ CLASS ║
╠════╬══════════════╬════════════════════╣
║ 1 ║ 1 ║ Security Awareness ║
║ 2 ║ 1 ║ Workplace Safety ║
║ 3 ║ 2 ║ Security Awareness ║
╚════╩══════════════╩════════════════════╝
目标结果
╔════╦══════╦════════════════════╗
║ ID ║ NAME ║ CLASS ║
╠════╬══════╬════════════════════╣
║ 1 ║ Bob ║ Security Awareness ║
║ 2 ║ Tom ║ Security Awareness ║
║ 3 ║ John ║ (null) ║
╚════╩══════╩════════════════════╝
,我使用的查询是
SELECT employee.id, employee.name, training.class
FROM employee
JOIN training ON employee.id = training.department_id
WHERE training.class LIKE '%SECURITY%'
ORDER BY employee_id
缺少“安全意识”类的员工没有出现,而是落入裂缝中。
是部门标识等于employee.id? – Maciej 2013-03-06 16:06:18