Выбрать строки с несколькими значениями из одного столбца? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть база данных, где 2 роли не могут быть связаны друг с другом, и мне нужно отобразить всех пользователей, у которых есть конфликтующие роли.

Например: бухгалтер (id 2) также не может быть тренером (id 5)

это должно быть сделано без использования CTE

     Table a                    Table b                  table c
---------------            -------------------        ------------
userID | roleID            roleID | conflictID           roleID | Role Name

  1        2                 2           5                  1      chef
  1        3                                                2      accountant
  1        5                                                3      driver
  2        3                                                4      barmaid
  2        1                                                5      trainer
  3        2
  3        3

результат должен содержать только идентификатор пользователя, который имеет обе роли 2 и 5

userID
------
  1

1 Ответ

0 голосов
/ 06 сентября 2018

Соедините таблицу b с таблицей дважды, чтобы получить ID пользователя с конфликтующими комбинациями:

select distinct a1.userid
from tableb b
join tablea a1 on b.roleID = a1.roleID
join tablea a2 on b.conflictID = a2.roleID
              and a1.userID = a2.userID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...