** Я использую postgres db
Мои таблицы выглядят следующим образом
таблица 1 ::
user_details
столбцы::
user_id,first_name,middle_name,last_name,organisation
table2
user_roles
cols ::
id,user_name,role
Ограничения ::
FK==>user_roles(user_name) reference user_details(user_id)
SQL-запрос, который я написал:
SELECT ud.user_id,
ud.organisation,
CONCAT(COALESCE(ud.first_name,''),' ',COALESCE(ud.middle_name,''),' ',COALESCE(ud.last_name,'')) AS full_name,
ur.role
FROM user_details ud
INNER JOIN user_roles ur ON ud.user_id = ur.username;
, который дает мне данные в виде ::
user_id | organisation | full_name | role
--------+----------------+-------------------+--------------------
user1 | organisation 1 | first middle last | ROLE_REGISTEREDUSER
user1 | organisation 1 | first middle last | ROLE_ADMIN
user 2 | org 2 | first middle last | ROLE_REGISTEREDUSER
user 2 | org 2 | first middle last | ROLE_ADMIN
КакЕсть несколько ролей, я получаю 2 строки для каждого пользователя.Есть ли способ объединить роли и получить по одной строке для каждого пользователя с объединенными ролями следующим образом:
user_id | organisation | full_name | role
--------+----------------+-------------------+-------------------------------
user1 | organisation 1 | first middle last | ROLE_REGISTEREDUSER,ROLE_ADMIN
user 2 | org 2 | first middle last | ROLE_REGISTEREDUSER,ROLE_ADMIN