SQL получают все квалифицированные пользователи - PullRequest
0 голосов
/ 18 октября 2018

По какой-то причине я действительно изо всех сил пытаюсь получить этот запрос правильно.Может быть, есть концепция, которую я не понимаю.У меня есть таблица с записями о пройденных курсах.Таким образом, вы можете думать об этом как course_id, username, date_completed.И у меня есть другая таблица, которая содержит все требования для клиентов в этом случае.Эта таблица выглядит как client_id, course_id.Давайте назовем это Client_requirements.

Таким образом, таблица client_requirements может выглядеть следующим образом:

client_id | course_id
1            3
1            4
1            7

Другая таблица выглядит следующим образом:

course_id| username| training_date
3          1234      date
4          1234      date
7          1234      date
7          4354      date

Что мне нужно сделать, это выяснить, основываясь накурсы, пройденные пользователем, квалифицированы пользователем.Квалификация в этом случае означает, что они прошли все курсы, которые требуются клиенту.Я чувствую, что это что-то очевидное, но мой мозг в этот момент растаял.

Я использую оракул, кстати, но я не думаю, что это должно иметь значение для такого рода проблем.

1 Ответ

0 голосов
/ 18 октября 2018

Если я правильно понимаю, вы хотите join с group by.,,и затем having, чтобы убедиться, что все курсы учтены:

select uc.user_id, cr.client_id
from user_courses uc join
     client_requirements cr
     on uc.course_id = cr.course_id
group by uc.user_id, cr.client_id
having count(*) = (select count(*) from client_requirements cr2 where cr2.client_id = cr.client_id);

Это предполагает, что курсы не перечислены дважды для одного и того же пользователя / клиента.Это легко принять во внимание, если это может произойти.

Предложение having проверяет, что количество совпадений для пользователя / клиента соответствует общему количеству требуемых курсов для клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...