Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Выборка пользователей со сложным условием (Андрій) 03/06/2016 - 12:54:15
      Re: Выборка пользователей со сложным условием (Akina) 03/06/2016 - 13:02:58
      Re: Выборка пользователей со сложным условием (Андрій) 03/06/2016 - 18:00:43
      Re: Выборка пользователей со сложным условием (Андрій) 03/06/2016 - 18:01:38
      Re: Выборка пользователей со сложным условием (Akina) 03/06/2016 - 18:39:06
      Re: Выборка пользователей со сложным условием (Андрій) 03/06/2016 - 18:52:04
      Re: Выборка пользователей со сложным условием (Akina) 03/06/2016 - 22:40:18
      Re: Выборка пользователей со сложным условием (Андрій) 04/06/2016 - 18:56:14



From: Андрій - 03/06/2016 - 12:54:15
Subject: Выборка пользователей со сложным условием
-----------------
Задача: Нужно составить запрос так чтобы выводил всех пользователей сайта кроме тех, что есть в друзьях авторизованного пользователя и эво самого.

Есть две таблицы:
Первая user - список пользователей сайта
Вторая friends - связь двух пользователей которые являются друзьями

Таблица user имеет колонки:
id_сер - id пользователя
name - имя пользователя

Таблица friends имеет колонки:
id_s - id пользователя который отправил запрос на дружбу
id_f - id пользователя принявший запрос на дружбу

То что я на данный момент составил:

SELECT name,id_s,id_f,id_user
FROM user LEFT JOIN friends
ON user.id_user = friends.id_s
WHERE
id_s IS NULL AND id_user NOT IN (SELECT id_f
FROM friends
WHERE
id_s = $user_id)
AND id_user NOT IN (SELECT id_s
FROM friends
WHERE
id_f = $user_id)
UNION
SELECT name,id_s,id_f,id_user
FROM user LEFT JOIN friends
ON user.id_user = friends.id_s
WHERE id_s != $user_id AND id_f != $user_id



$user_id - id авторизованного пользователя

Проблемы которые возникли:
1. Одни и те же пользователи выводятся несколько раз
2. Если пользователь не имеет еще друзей то в списке выводится и он (Знаю как решить).

Вопрос:
1. Можно составить запрос более производительним? Если да, то как?
2. Если логика запроса правильная то как решить Вышеперечисленные проблемы?

Приоритеты:
1.Время выполнения запроса
2.Количество занимаемого места


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
43557



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |