Sql, чтобы получить всех пользователей, которые не имеют отношения с конкретным пользователем - PullRequest
0 голосов
/ 17 января 2019

Здравствуйте, ребята! У меня возникла серьезная проблема с получением результатов пользователей, не имеющих отношения ко мне, в таблице друзей. И я хочу, чтобы пользователь вернулся с конфиденциальностью = 0. Пожалуйста, имейте в виду, у меня номер 3

Итак, у меня есть две таблицы (таблица пользователей и таблица друзей).

Таблица пользователей

id| username| country | privacy
1 | Everest | Austria | 0
2 | Mark    | Sweden  | 0
3 | Precious| Norway  | 1
4 | Daniel  | Ghana   | 1
5 | Jim     | Greece  | 1
6 | Ayo     | Brazil  | 0

Таблица друзей

id| sender_id| receiver_id| accepted
1 | 1        | 3          | 0
2 | 3        | 4          | 0

Я хотел бы получить ожидаемый результат Ожидаемый результат

id| username| country | privacy
2 | Mark    | Sweden  | 0
6 | Ayo     | Brazil  | 0

Понятия не имею, что делать, так как я все еще новичок в SQL. Спасибо

1 Ответ

0 голосов
/ 17 января 2019

Я думаю, что это должно сделать это:

SELECT *
FROM users
WHERE privacy = 0
AND id <> 3
AND id NOT IN (
    SELECT receiver_id FROM friends WHERE sender_id   = 3
    UNION ALL
    SELECT sender_id   FROM friends WHERE receiver_id = 3
)

Предполагается, что sender_id и receive_id не могут содержать NULL.

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