Answer the question
In order to leave comments, you need to log in
How to improve the request?
Good day, I have a problem, I am generating the following request:
SELECT `g`.`id` AS `groupId`,
`g`.`name` AS `groupName`,
GROUP_CONCAT(DISTINCT r.name SEPARATOR ",") AS ROLES
FROM
(SELECT `u`.`user` AS `user`,
`u`.`gid` AS `gid`,
`ru`.`id` AS `role`
FROM `users` AS `u`
LEFT JOIN `roles_users` AS `ru` ON `u`.`user` = ?
AND `ru`.`user` = `u`.`id`
UNION SELECT `u`.`user` AS `user`,
`u`.`gid` AS `gid`,
`rg`.`id` AS `role`
FROM `users` AS `u`
LEFT JOIN `roles_groups` AS `rg` ON `u`.`user` = ?
AND `rg`.`gid` = `u`.`gid`) AS `ur`
INNER JOIN `groups` AS `g` ON `g`.`id` = `ur`.`gid`
LEFT JOIN `roles` AS `r` ON `r`.`id` = `ur`.`role`
LIMIT 1
Answer the question
In order to leave comments, you need to log in
SELECT `u`.`gid` AS `group_id`,
`g`.`name` AS `group_name`,
GROUP_CONCAT(DISTINCT `r`.`name` SEPARATOR ",") AS roles,
FROM (
SELECT `u`.`user` AS `user`, `u`.`gid` AS `gid`, `ru`.`id` AS `role`
FROM `users` AS `u`
LEFT JOIN `roles_users` AS `ru`
ON `u`.`user` = :user_id AND `ru`.`user` = `u`.`user`
UNION SELECT `u`.`user` AS `user`, `u`.`gid` AS `gid`, `rg`.`id` AS `role`
FROM `users` AS `u`
LEFT JOIN `roles_groups` AS `rg`
ON `u`.`user` = :user_id AND `rg`.`gid` = `u`.`gid`
) AS `ur`
INNER JOIN `groups` AS `g` ON `g`.`id` = `ur`.`gid`
LEFT JOIN `roles` AS `r` ON `r`.`id` = `ur`.`role`
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question