私は2つのテーブルを1つのアクセス権と呼び、1つはRolePermissionsというN-N関係の第3のテーブルを介して関連しています。私が欲しいものmySql NからNまでのヌルでの二重結合 - 回答からのクロス結合
Permissions
id <- PK
name
Roles
id <- PK
name
RolePermisions
RoleId <-PK
PermissionId <-PK
isAllowed
は、その役割のためRolePermissionにテーブルに値がない場合、特定の役割の権限、およびNULL値の完全なリストを取得することです。左ジョイントは通常、トリックを行いますが、私はこれを動作させることはできません。 Permsissionで
:
基本的のは、私は、次の値を持っているとしましょう
1 - Per1
2 - Per2
3 - Per3
そして役割で:
1 - Role1
2 - Role2
そしてRolePermissions中:
RoleId - PermissionId - isAllowed
1 1 true
1 2 false
1 3 true
2 1 true
次のクエリでは、みかん動作しますが、それはRolePermissionsにおけるそれらの値ではないためにNULLを返しません。
select permissions.name, rolepermissions.allowed
FROM permissions LEFT JOIN rolepermissions
ON rolepermissions.permissionId = permissions.id
WHERE rolepermissions.roleId = 2;
役割2を照会するときに私が探していることになる結果は
Per1 - true
Per2 - NULL
Per3 - NULL
おかげでマイケル、私はそれを投稿した後、それを修正するために行って、私はそれを保存しようとしたとき、あなたはそれを固定気づきました。再度、感謝します。 –