Запрос просит найти наборы курсов, в которых их комбинация охватывает все недостающие знания / навыки, необходимые человеку для использования pos_code. Рассматриваемые наборы курсов не будут включать более трех курсов. Если
найдено несколько наборов курсов, перечислите наборы курсов (с их идентификаторами курсов) в порядке возрастания
общая стоимость курсов.
Следующая инструкция SQL находит только курсы для использования pos_code.
SELECT c.c_code, c.title, c.c_level, c.description, t.ks_code, SUM(c.retail_price)
FROM course c
INNER JOIN teaches t
ON c.c_code = t.c_code
INNER JOIN requires r
ON r.ks_code = t.ks_code
WHERE r.pos_code = 1
GROUP BY c.c_code, c.title, c.c_level, c.description, t.ks_code, c.retail_price
ORDER BY c.retail_price ASC;
Теперь мне нужно найти курсы, в которых человек должен пройти эту должность.
Например, per_id = 5 имеет навыки 1, 10, 15, 20, 25, 7.
Позиция, которую мы пытаемся найти, это pos_code = 1, для которого требуются навыки 1, 3, 5. Единственные курсы, которые должны быть перечислены, это курсы, которые обучают только навыкам 3 и 5, так как человек знает навык 1.
Ниже приведена другая часть запроса, над которым я пытаюсь работать:
WITH missing_ks(ks) AS (
(SELECT ks_code
FROM requires natural join position
WHERE pos_code = 1)
MINUS
(SELECT ks_code
FROM has_skill
WHERE per_id = 5))
В приведенном выше запросе только сообщается, какие навыки у этого сотрудника отсутствуют на этой должности Как мне объединить эти два запроса?