Задачи по MYSQL

By | August 18, 2015

Иногда самые лёгкие задачки имеют достаточно тривиальное решение. В голову пришла задачка ответ на которую я написал через 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 );

 

Category: Uncategorized