Вам нужно объединить user_relationships с собой, чтобы две строки с разными user_id
имели одинаковые friend_id
Все общие друзья:
select ur1.user_id user1,
ur2.user_id user2,
ur2.friend_id mutual_friend
from user_relationships ur1
JOIN user_relationships ur2 ON ur1.friend_id = ur2.friend_id
where ur1.user_id != ur2.user_id
Присоединиться к таблице пользователейполучить имена:
select ur1.user_id user_id1,
u1.name User1,
ur2.user_id user2,
u2.name User2,
ur2.friend_id mutual_friend_id,
u3.name mutual_friend
from user_relationships ur1
JOIN user_relationships ur2 ON ur1.friend_id = ur2.friend_id
JOIN user u1 ON u1.user_id = ur1.user_id
JOIN user u2 ON u1.user_id = ur2.user_id
JOIN user u3 ON ur1.user_id = u3.user_id
where ur1.user_id != ur2.user_id
Вы можете отфильтровать общих друзей для некоторых конкретных пользователей, используя ur1.user_id = first_user
и ur2.user_id = second_user