У меня есть таблица, которая связывает идентификатор пользователя и друга (который является другим пользователем), чтобы сказать, что они друзья. Если Пользователь 1 добавляет пользователя 24 в качестве своего друга, первая строка в таблице ниже будет Если пользователь 10 добавляет пользователя 1 в качестве друга, вторая строка в таблице ниже будетMySQL Table Joins
От там, даже если пользователь 1 находится с обеих сторон, они дружат с соседним ID.
FRIENDS TABLE:
userID | friendID
-----------------
1 | 24
10 | 1
Что мне нужно сделать сейчас: Если Пользователь 1 авторизован, мне нужно, чтобы показать людям, что они являются друзьями с. Этот запрос я написал:
SELECT DISTINCT (Users.username), friends.userID, friends.friendID FROM Users, friends WHERE Users.userID IN(SELECT userID FROM friends WHERE Users.userID = friends.userID) OR Users.userID IN(SELECT DISTINCT(userID) FROM friends WHERE Users.userID = friends.friendID)
Принесет назад:
username | userID | friendID
-----------------------------
name1 | 10 | 1
name1 | 1 | 24
name2 | 10 | 1
name2 | 1 | 24
name1 = ID 1 name2 = ID 10
Есть ли способ, где я могу получить вошедшего пользователя друзей (например, если ID # 1 зарегистрирован), отображаются ли они в столбцах userID или friendID. а затем, в этом случае, извлекать ID 24 и 10, потому что они связаны с ID # 1, а затем, когда дело доходит до отображения, исключить ID # 1 из списка, потому что он поднимет, что они друзья с собой.
Надеюсь, что это имеет смысл и благодарит вас заранее!
Вы все еще, вероятно, хотите, чтобы обернуть, что в SELECT DISTINCT так что вы не получаете дубликатов. – Brad
@Brad, спасибо за комментарий, но UNION автоматически удаляет повторяющиеся строки. –
О, я так и не понял!Спасибо за информацию – Brad