MySQLi: ВЫБЕРИТЕ всех пользователей, НЕ вошедших в массив друзей - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь случайным образом выбрать пользователей из дБ, которые не распознаются как друзья в массиве друзей текущих пользователей (userLoggedIn).У меня есть пользователи в массиве друзей, которые представлены следующим образом:

,edith_copecky,eddie_sasnchez,jay_beagle,red_one, 

Когда я звоню, чтобы извлечь только друзей, я использую следующее:

$query = mysqli_query($con,"SELECT * FROM users WHERE friend_array LIKE '$username,%' OR friend_array LIKE '%,$username,%' OR friend_array LIKE '%,$username' LIMIT 0,8");

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

$not_friend_query = mysqli_query($con,"SELECT * FROM users WHERE username ......???? ORDER BY RAND() LIMIT 0,5");

Я довольно новичок в этом, поэтому, пожалуйста, будьте спокойны :) Я просто не уверен, как отфильтровать тех участников, которые уже являются друзьями с userLoggedIn, из результата запроса.

1 Ответ

0 голосов
/ 22 сентября 2018

Чтобы найти всех пользователей, которые не входят в текущий пользователь friend_array, вам необходимо самостоятельно присоединиться.Вам нужно использовать шаблон LEFT JOIN - NULL, чтобы найти пользователей, которым не соответствует.

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

SELECT u1.username
FROM users AS u1
LEFT JOIN users AS u2 ON FIND_IN_SET(u1.username, u2.friend_array) AND u2.username = '$userLoggedIn'
WHERE u2.username IS NULL
AND u1.username != '$userLoggedIn' -- exclude user themselves

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...