powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка пользователей со сложным условием
2 сообщений из 2, страница 1 из 1
Выборка пользователей со сложным условием
    #39249643
kartak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача: Нужно составить запрос так чтобы выводил всех пользователей сайта кроме тех, что есть в друзьях авторизованного пользователя и эво самого.

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

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

Таблица user имеет колонки:

id_сер - id пользователя

name - имя пользователя

Таблица friends имеет колонки:

id_s - id пользователя который отправил запрос на дружбу

id_f - id пользователя принявший запрос на дружбу

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  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.Количество занимаемого места
...
Рейтинг: 0 / 0
Выборка пользователей со сложным условием
    #39250666
kartak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
SELECT name,id_user FROM user WHERE id_user not in(
SELECT id_s FROM friends WHERE id_f=$user_id
UNION ALL
SELECT id_f FROM friends WHERE id_s=$user_id
UNION ALL
SELECT $user_id) 
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка пользователей со сложным условием
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]