У меня следующая проблема:
У меня есть две таблицы: (упрощенно)
+--------+ +-----------+
| User | | Role |
+--------+ +-----------+
| ID<PK> | | ID <PK> |
+--------+ | Name |
+-----------+
и отношение M: N между ними
+-------------+
| User_Role |
+-------------+
| User<FK> |
| Role<FK> |
+-------------+
Мне нужно создать представление, которое выбирает меня: Пользователь и в одном столбце все его роли (это делается group_concat).
Я пробовал следующее:
SELECT u.*, group_concat(r.Name separator ',') as Roles FROM
User u
LEFT JOIN User_Role ur ON ur.User=u.ID
LEFT JOIN Role r ON ur.Role=r.ID
GROUP BY u.ID;
Однако это работает для пользователя с некоторыми определенными ролями. Пользователи без роли не возвращаются. Как я могу изменить оператор, чтобы он возвращал мне пользователя с пустой строкой в столбце Роли, если у пользователя нет роли?
Объяснение: Я передаю данные SQL непосредственно в сетку, которая затем форматируется, и мне легче создавать медленное и сложное представление, чем форматировать его в моем коде.
Я использую MySQL