С учетом следующих таблиц:
Staff
+------------+--------+
| employeeID | name |
+------------+--------+
| 100100 | Kelly |
| 101010 | John |
| 222222 | Stuart |
+------------+--------+
Academics
+------------+----------+
| employeeID | degreeID |
+------------+----------+
| 100100 | PhD |
| 101010 | Eng |
| 222222 | Sci |
+------------+----------+
Class
+------------+-----------+-----------+
| employeeID | studentID | subjectID |
+------------+-----------+-----------+
| 100100 | 998 | BUS_18_2 |
| 100100 | 921 | BUS_18_2 |
| 100100 | 901 | BUS_18_2 |
| 100100 | 934 | BUS_19_1 |
| 100100 | 964 | BUS_19_2 |
| 100100 | 934 | LED_19_1 |
| 100100 | 964 | LED_19_2 |
| 101010 | 901 | COE_19_2 |
| 101010 | 874 | COE_19_2 |
| 101010 | 823 | COE_19_2 |
| 222222 | 212 | FTR_17_2 |
| 222222 | 102 | FTR_17_1 |
| 222222 | 684 | FTR_18_1 |
+------------+-----------+-----------+
Вернуть список имен и степеней всех сотрудников, не прошедших обучение в 2019 году
Я пробовал различные методы построения вложенных операторов, чтобы определить, работал ли сотрудник несколько лет (основываясь на подсчете subjectID), но это более или менее жестко закодировано, и новые записи могут испортить такой метод ( как видно из примера).
Ожидаемый результат
+------------+------------+
| name | degreecode |
+------------+------------+
| stuart | sci |
+------------+------------+