Соедините 3 таблицы и верните все, что не во 2-й и 3-й - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть 3 таблицы (пользователи, назначенные специалисты, назначенные супервизоры)

enter image description here

technicianid и uspervisorid являются внешними ключами для идентификатора пользователя stationid, а regionid являются внешними ключами в некоторых других таблицах

Основные пользователи назначаются на сообщения таким образом, что я хочу сделать, чтобы вывести пользователей, которые не назначены на сообщение, в данном случае:

enter image description here

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

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

Вы можете написать свой запрос так:

SELECT * from users U where U.user_id NOT IN (SELECT technicianid FROM assignedtechnicians) AND U.user_id NOT IN (SELECT uspervisorid FROM assignedsupervisors);
0 голосов
/ 18 апреля 2020

Я бы просто использовал два not exists условия для этого, по одному для поиска в каждой таблице моста:

select u.*
from users
where
    not exists (select 1 from assignedtechnicians ast where ast.technicianid = u.id)
    and not exists (select 1 from assignedsupervisors ass where ass.supervisorid = u.id)
0 голосов
/ 18 апреля 2020

Вы ищете LEFT JOIN, чтобы вы могли присоединиться к несуществующим сообщениям (тем, которые вы ищете)

SELECT users.*
FROM users
LEFT JOIN posts ON posts.user_id = users.id
WHERE posts.id IS NULL

posts.id IS NULL означает, что у пользователя нет сообщений.

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