Учитывая таблицу User и таблицу Friend, для каждого пользователя в таблице user я хочу написать SQL-запрос, чтобы найти общих друзей своих друзей, т. Е. Для идентификатора пользователя в таблице User найти существующих друзей, которые являются друзьями друг друга. Например
user_table
userID
1
2
5
friend_table
user1 user2
1 3
1 4
3 4
5 3
5 6
Я хочу получить:
user friend1 friend2
1 3 4
Я пробовал что-то вроде этого, чтобы получить ID пользователя и его друзей:
(добавлен UNION только для устранения дубликатов в результате двунаправленных связей)
with ftable as (
select user1,user2 from friend_table
),
user_friend as (
select distinct userID, friend
from (
select u.userID, ft.user2 AS friend
from user_table u JOIN ftable ft ON u.userID = ft.user1
UNION
select u.userID, ft.user1 AS friend
from user_table u JOIN ftable ft ON u.userID = ft.user2
) a
)
UserID friends
1 3
1 4
5 3
5 6
Как найти друзей, которые дружат друг с другом?