История изменений
Исправление slovazap, (текущая версия) :
Например, как-то так, подзапросом:
SELECT
*,
EXISTS(SELECT * FROM UserRoles INNER JOIN Roles USING(RoleId) WHERE RoleName = 'Owner' AND UserRoles.UserId = Users.UserId) AS IsOwner
FROM Users;
Джойнами:
SELECT
UserId, UserName, coalesce(bool_or(RoleName = 'Owner'), false) AS IsOwner
FROM Users
LEFT OUTER JOIN UserRoles USING(UserId)
LEFT OUTER JOIN Roles USING(RoleId)
GROUP BY UserId, UserName;
Либо сделать нормальную структуру БД с enum типом ролей, и массовом ролей для пользователя вместо промежуточных таблиц.
Исходная версия slovazap, :
Например, как-то так, подзапросом:
SELECT
*,
EXISTS(SELECT * FROM UserRoles INNER JOIN Roles USING(RoleId) WHERE RoleName = 'Owner' AND UserRoles.UserId = Users.UserId) AS IsOwner
FROM Users;
Джойнами:
SELECT
UserId, UserName, bool_or(RoleName = 'Owner') AS IsOwner
FROM Users
LEFT OUTER JOIN UserRoles USING(UserId)
LEFT OUTER JOIN Roles USING(RoleId)
GROUP BY UserId, UserName;
Либо сделать нормальную структуру БД с enum типом ролей, и массовом ролей для пользователя вместо промежуточных таблиц.