2017-06-06 59 views
0

我有两个表:用户[id,email]和角色[id,name]与多对多连接表user_has_roles [user_id,role_id]。 我试图让这显示哪些用户具有特定角色表,如果没有的话空(或0)类似如下:多对多查询MySQL

  | role 1 | role 2 | role 3 
--------------------------------------- 
[email protected] | 1  | null | 1 
[email protected] | null | null | 1 
--------------------------------------- 

感激有这方面的帮助。

回答

0
select u.email, 
     case when sum(r.name = 'role 1') > 0 then 1 else null end as `role 1`, 
     case when sum(r.name = 'role 2') > 0 then 1 else null end as `role 2`, 
     case when sum(r.name = 'role 3') > 0 then 1 else null end as `role 3` 
from users u 
left join user_has_roles ur on ur.user_id = u.id 
left join roles r on ur.role_id = r.id 
group by u.email 
+0

感谢您的快速回复。但它显示以下错误:表达式是预期的。 (在位置25的“案例”附近) –

+0

你确定你应用它完全像我的查询吗? –

+0

阅读文档...它应该是正确的,但不知道为什么phpmyadmin不接受它:) :) –