従業員用のテーブルとトレーニング用の別のテーブルがあります。トレーニング テーブルには、従業員が完了したさまざまなトレーニング クラスが含まれています。セキュリティ意識向上トレーニングが義務付けられているため、すべての従業員がこのトレーニング クラスを修了する必要があります。リストされているすべての従業員のトレーニングを完了したかどうかを返すクエリの実行に問題があります。
従業員テーブルの例
╔════╦══════╗
║ 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
「セキュリティ意識」クラスを欠席した従業員は現れず、亀裂から抜け落ちます。