У меня есть социальная сеть, такая как база данных, где пользователи могут следовать друг за другом, и у пользователей также могут быть интересы.
Я хотел бы знать, как я могу вернуть строки, в которых перечислены пользователи, которые следуют друг за другом и у которых есть хотя бы один общий интерес.
Я написал запрос, чтобы отобразить пользователей, которые следуют друг за другом, и то, что интересует пользователя, за которым следят. Мне нужно выделить пары пользователей, которые следуют друг за другом и интересуются тем же.
КОД ТАК FAR:
SELECT me.followed, me.following, me.interest FROM
(SELECT followed, following, interest
FROM follow JOIN interest
WHERE followed = interest.user_id
ORDER BY followed) AS me
INNER JOIN follow AS you ON me.following = you.followed
WHERE me.followed = you.following
[таблица] https://i.imgur.com/t68T4OI.png
A B C
2 1 2
2 1 6
2 1 9
1 2 1
1 2 7
1 2 8
7 15 1
7 15 7
15 7 2
15 7 7
(A = следит, B = следит, C = интерес пользователя)
Извините за форматирование, похоже, не существует простого способа создания таблиц.
Моя таблица пока показывает, что пользователь 2 следует за пользователем 1, а пользователь 1 следует за пользователем 2. То же самое для пользователей 15 и 7. Он также показывает, что пользователь 2 заинтересован в интересе 2, интересе 6 и интересе 9.
Я хочу написать некоторый код, который должен просто возвращать пользователя 7 и пользователя 15, поскольку они являются единственными пользователями, которые следуют друг за другом и имеют общий интерес (интерес 7), но я не уверен, с чего начать.