Иногда самые лёгкие задачки имеют достаточно тривиальное решение. В голову пришла задачка ответ на которую я написал через join в чём был глубоко не прав. В MySql надо избегать Join в запросах, так как это может значительно увеличить нагрузку на базу.
Задача следующая.
Есть таблица(TABLE) в соц сети.
t | s |
---|---|
5 | 6 |
6 | 7 |
7 | 15 |
12 | 7 |
15 | 19 |
5 | 19 |
Эта таблица представляет из себя взаимосвязь дружбы между различными пользователями.
Скажем пользовать под номером 5 дружит с пользователем под номером 6 и 19, 6 дружит с 5 и 7 и так далее.
Например мы знаем что есть пользователь 5 и необходимо найти всех друзей с которыми дружит этот пользователь.
SELECT * FROM TABLE WHERE t=5 OR s=5
Второй вопрос:
Необходимо найти всех друзей, друзей с которыми дружит пользователь 5.
Если мы ищем пользователя 5, то мы должны вывести пользователя 15 и 7
SELECT * FROM users where s IN (SELECT s FROM users WHERE t = 7 ) OR t IN (SELECT t FROM users WHERE s = 7 );