Запрос, чтобы проверить отношения между столбцами? - PullRequest
0 голосов
/ 02 мая 2019

У меня в настоящее время есть таблица с именем User_Followers, в этой таблице есть следующие столбцы:

user_id Follower_id

Я пытаюсь создать запрос, который будет извлекать всех людей, за которыми следит пользователь, но за ними не следит.

Например:

User ID | Follower ID

1              2
1              4
3              1
4              2
4              3

В приведенном выше примере, если бы я проверял пользователей, не следующих за пользователем 4. Он должен вернуть 1.

Аналогично, если бы я проверял пользователей, не следующих за пользователем 2, он должен вернуть 1 и 4

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Я пытаюсь создать запрос, который будет извлекать всех людей, за которыми следит пользователь, но за которыми не следит.

Если я правильно понимаю, то not exists, кажется, делает то, что вы хотите:

select uf.user_id
from User_Followers uf
where uf.follower_id = @user and
      not exists (select 1
                  from User_Followers uf2
                  where uf2.user_id = uf.follower_id and
                        uf2.follower_id = uf.user_id
                 );
0 голосов
/ 02 мая 2019

У вас есть 2 запроса:

"отслеживается" можно записать так:

SELECT u.Follower_Id
FROM User_Followers u
WHERE u.User_Id = ?

"все люди, за которыми следит пользователь« можно сделать следующим образом:

SELECT u.User_Id 
FROM User_Followers u
WHERE u.Follower_Id = ?

Теперь вы можете объединить оба запроса для выполнения « всех людей, за которыми следует пользователь » а не "следуют"

SELECT u.User_Id 
FROM User_Followers u
WHERE u.Follower_Id = ?
AND u.User_Id NOT IN
(
    SELECT uf.Follower_Id
    FROM User_Followers uf
    WHERE uf.User_Id = ?
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...