2017-06-06 11 views
0

多対多の接続テーブルuser_has_roles [user_id、role_id]を持つusers [id、email]とroles [id、name]の2つのテーブルがあります。 私は、次のようにヌル(または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がなぜそれを受け入れていないのかは分かりませんが::) –