Мне нужно выполнить запросы на обучение, которые возвращают результаты для таких вопросов, как: «Кто прошел это обучение, но не этот тренинг?»
В приведенной ниже упрощенной таблице я хотел бы знать, какой сотрудник прошел тренинг_ид 1 (как указано в поле даты_даты), но не завершил тренинг_ид 7.
+-------------+-------------+----------------+
| emp_id | training_id | completed_date |
+-------------+-------------+----------------+
| 1 | 1 | 2010-04-02 |
+-------------+-------------+----------------+
| 1 | 7 | Null |
+-------------+-------------+----------------+
| 2 | 1 | Null |
+-------------+-------------+----------------+
| 2 | 7 | Null |
+-------------+-------------+----------------+
Желаемый результат будет emp_id 1, и мы хотели бы вернуть его / ее завершенное обучение и незавершенное обучение по параметрам запроса:
+-------------+-------------+----------------+
| emp_id | training_id | completed_date |
+-------------+-------------+----------------+
| 1 | 1 | 2010-04-02 |
+-------------+-------------+----------------+
| 1 | 7 | Null |
+-------------+-------------+----------------+
Я не могу понять, как это сделать с помощью обычного запроса, потому что, похоже, ему нужна логика IF. Пример: вернуть строки, в которых эта тренировка завершена, и строки, в которых эта вторая тренировка не завершена, НО ТОЛЬКО, если первая тренировка завершена.
Как мне выразить что-то подобное в SQL?