Привет, ребята. В моей базе данных есть таблица, используемая пользователями для отслеживания друг друга.
Таблица выглядит следующим образом: UniqueID FollowerID FollowedUserID
FollowID - это идентификатор пользователя, которыйследует за кем-то еще
FollowedUserID - это идентификатор пользователя, за которым следует пользователь FollowID
Я хочу получить список соединений из этой таблицы на основе одного пользователя.Мой запрос должен вернуть все другие идентификаторы пользователя, которые текущий пользователь либо следит, либо за ним следует без наложений.
Итак, у нас есть несколько записей:
FollowerID FollowedUserID
1 2
1 3
4 1
2 1
Это показывает, что пользователь 1 следует за пользователями 2 и 3, и, таким образом, за пользователями 2 и 3 следует пользователь 1 .На другой стороне спектра видно, что за Пользователем 1 следуют пользователи 2 и 3.
Что я хотел бы сделать, это выяснить соединения, которые пользователь 1 имеет, поэтому запрос должен возвращать пользователей: 2, 3 и 4 (пользователь 1 следит за пользователями 2 и 3 и сопровождается пользователем 4)
Как я могудобиться этого из одного запроса?
Соединение считается либо выполненным, либо подписанным на кого-то другого, поэтому возможно, что будут получены некоторые дублирующие результаты (если оба пользователя следуют друг за другом).Я хотел бы иметь возможность сгруппировать эти результаты так, чтобы результат был разным.
Я пробовал запрос UNION, подобный следующему:
SELECT FollowerID, FollowedUserID From Follows WHERE FollowerID = 1
UNION
SELECT FollowerID, FollowedUserID FROM Follows WHERE FollowedUserID = 1
Теоретически я хотел бы сгруппироватьFollowerID и FollowedUserID вместе, чтобы их отличать друг от друга.
Меня не интересует получение непонятного результата, а затем создание набора данных с уникальными результатами на стороне php - запрос должен возвращать только разные значения.