У меня есть такая схема:
// table badge_types
id | name
+++|++++++++++
1 | mentor
2 | proctor
3 | doctor
// table badges
id | badge_type_id | user_id
+++|+++++++++++++++|++++++++
1 | 1 | 5
2 | 1 | 6
3 | 2 | 6
4 | 3 | 6
5 | 2 | 19
6 | 3 | 20
Что я хочу сделать, это выбрать все badge_types
, которые конкретный пользователь еще не получил.В приведенном выше примере вызов запроса для:
user_id = 5
возвращает badge_type_id
2
и 3
user_id = 6
возвращает empty
set (пользователь получил их всеуже)
user_id = 19
возвращает badge_type_id
1
и 3
Я могу сделать это с помощью предложения INTERSECT
.Но мне интересно, можно ли это сделать простым JOIN
?Любая помощь будет оценена.