SQL-запрос для возврата каждого пользователя и его друзей - PullRequest
0 голосов
/ 07 июня 2018

Допустим, у вас есть таблица users и таблица friends.Таблица друзей имеет следующие столбцы

user_id, friend_id

Я хочу иметь возможность получить всех пользователей из таблицы users и перебрать их, чтобы получить их друзей БЕЗ создания еще одной БДвызов ... Есть ли способ сделать это?

, если у меня есть таблица users со следующими столбцами

id, username

Я могу получить пользователяи сделать что-то это

$result->username ... or $result->id

но я хочу быть в состоянии сделать это

$result->friends

Есть ли способ как-то добавитьэтот "фальшивый" friends атрибут, использующий SQL-запрос?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Чтобы получить друзей для каждого пользователя в виде списка через запятую, есть функция GROUP_CONCAT, которую вы можете использовать в MySql.У меня есть левое соединение, чтобы получить все строки из таблицы users, используйте обычное соединение, если вы хотите, чтобы только пользователи имели друзей.

SELECT u.id, u.username, GROUP_CONCAT(f.friend_id)
FROM users u
LEFT JOIN friends f ON u.id = f.user_id
GROUP BY u.id, u.username
0 голосов
/ 07 июня 2018

Вы пробовали ПРИСОЕДИНЯТЬСЯ, это может сделать работу

ВЫБЕРИТЕ u.username, f.friend_id ОТ пользователей u ОСТАВЬСЯ ВСТРОЕННЫМИ друзьями f ON u.user_id = f.user_id

Или вы делаетекак показано ниже

ВЫБЕРИТЕ u.username, f.friend_id ОТ пользователей u, друзей f ГДЕ u.user_id = f.user_id

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