@Alk90
php, mysql, jquery, css, html, api

Как правильно хранить друзей?

Всем привет! Столкнулся с таким вопросом... Сделал таблицу пользователей и таблицу друзей.
Таблица друзей выглядит так:
id - ID записи в таблице
user_id - пользователь отправивший заявку
friend_id - пользователь которому отправили заявку
status - 1 == друг, 2 == еще не принятая заявка

Все бы ничего, но когда нам нужно проверить, является ли один пользователь другом второго, приходится делать вот такой страшный запрос, потому как пользователь мог пригласить и пользователя могли пригласить в друзья.

SELECT f.`status` 
FROM `friends` f 
WHERE 
   (f.`user_id` = 111 AND f.`friend_id` = 222) 
   OR 
   (f.`user_id` = 222 AND f.`friend_id` = 111)


Так же проблема возникает, когда нужно сделать JOIN, приходится делать такой:

LEFT JOIN `friends` ON (f.`user_id` = 111 AND f.`friend_id` = 222) OR (f.`user_id` = 222 AND f.`friend_id` = 111)


И хуже всего, когда нужно вывести список друзей (для пользователя 111), тогда в SELECT приходится добавлять что-то подобное, чтобы получить ID друга:

IF(f.`user_id` = 111, f.`friend_id`, f.`user_id`) as friend_id
  • Вопрос задан
  • 439 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы