Задать вопрос
@coden55

Выбрать друзей из таблицы?

Таблица друзей с двумя колонками from_user_id и to_user_id
Наличие записи к примеру 1 - 3 говорит о неподтвержденном запросе на дружбу. Наличие в добавок обратной записи 3 - 1 говорит что 2 пользователя - друзья.
Подскажите навскидку запрос каким образом из таблицы выцепить всех подтвержденных друзей конкретного пользователя?
  • Вопрос задан
  • 219 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 3
@Joysi75
Примерно так (если понял вопрос), вместо 5 - нужное значение (подправил, после замечания автора топика):
select t2.* from table1 t1,table1 t2 
  where 
     t1.from_user_id=t2.to_user_id and 
     t2.from_user_id=t1.to_user_id and 
     t1.from_user_id=5
Ответ написан
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
Переделайте таблицу так:
user_id | friend_id | status

Юзер 1 имеет френда с ид 3, статус дружбы 2 (1 - запрос отправлен, 2 - дружба подтверждена).

После этого ищите все строки, где статус 2.
Ответ написан
@etc83
Software Engineer
CREATE TABLE `frends` (
	`from_user_id` INT(11) NULL DEFAULT NULL,
	`to_user_id` INT(11) NULL DEFAULT NULL
);

INSERT INTO `frends` (`from_user_id`, `to_user_id`) VALUES
	(1, 3),
	(3, 1),
	(1, 2),
	(1, 4),
	(4, 1),
	(3, 4),
	(5, 1),
	(5, 4),
	(4, 5),
	(1, 5);
	
select frends.from_user_id 'Я', group_concat(frendsPlus.from_user_id) 'Мы друзья'
from frends
left join frends frendsPlus on 
 ( 
  frends.from_user_id = frendsPlus.to_user_id and
  frendsPlus.from_user_id = frends.to_user_id
  )  
group by frends.from_user_id


198517c999f74c7fa78bab782d464623.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы