MySQL データベースにこのような 3 つのテーブルがあるとします。
1. User(userId,name)
2. Role(roleId,role)
3. UserRoleMap(userRoleId,userId,roleId)
1 人のユーザーが複数の役割を持つ場合があります。
ユーザーが複数のrole
を持っている場合、最初に来るロールを 1 つ選択する必要がありますhierarchy(Pre-defined)
。階層の順序は、たとえば、Johnに 2 つのロール(管理者、ユーザー) がある場合、予想される出力は次のようになります。
1.Admin,2.Supervisor,3.User.
+----------+-----------+
|John |Admin | (John have two roles:User,Admin)
|Vishal |Supervisor | (Vishal have two roles:User,Supervisor)
クエリの最終結果。次のクエリを試しました。
select user.name,
FIND_IN_SET(trim(role.role),'Admin,Supervisor,User') as 'roleIndex',
(case when(FIND_IN_SET(trim(role.role),'Admin,Supervisor,User')=1) then
'Admin'
else
case when(FIND_IN_SET(trim(role.role),'Admin,Supervisor,User')=2) then
'Supervisor'
else
case when(FIND_IN_SET(trim(role.role),'Admin,Supervisor,User')=3) then
'User'
end
end
end) as role
from
User user
inner join UserRoleMap userRole on user.userId = userRole.userId
inner join Role role on role.roleId = userRole.roleId
group by user.userId;
ありがとう。すべての答えをいただければ幸いです。