Друзья друзей, как вывести? - MySQL

Формулировка задачи:

Ковырнул такое, но не пойму, почему оно выводит неправильно http://sqlfiddle.com/#!9/cb09e5/2 Допустим нужно вывести друзей юзера 2, у которого друзья 3 и 4, но за исключением самого юзера + его друзей, так как нужно не друзей, а друзей друзей вывести онли. В итоге результат почти правильный. но выводит юзера под номером 4, который является другом и не должен был выводиться, что проверяется FIND_IN_SET, но блин, почему в значении aaa разные значения? Ведь тот подзапрос который присваивает ааа значения в скобках и по идее должен выполняться раньше, но почему-то это не так. Короче, поясните.

Код к задаче: «Друзья друзей, как вывести? - MySQL»

textual
SET @f_ids:='2';
select friend_id, @f_ids:=CONCAT_WS( ',', friend_id, @f_ids ) AS aaa from friends   
WHERE friends.user_id=2;
 
SELECT * 
FROM 
  users 
  INNER JOIN (
   SELECT mutual_friends.user_id, mutual_friends.friend_id, @f_ids as aaa 
  FROM friends AS mutual_friends
) AS result_friends ON 
  users.id=result_friends.friend_id where FIND_IN_SET( result_friends.friend_id, aaa )=0

9   голосов, оценка 4.111 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы
Для поиска решения или похожих решений вы можете воспользоваться "Поиском по сайту" или "Поиском по разделу"
Поиск по сайту