2017-06-06 68 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不接受它:) :) –