role_perms
aが1の行があるかどうかをテーブルで確認しましたrole_id
か?クエリが機能する必要があるためです。
これはどのように作動しますか?
まず、テーブルとその関係を理解してみてください。あなたのテーブルは次のテーブルのようなものだと思います。
ROLEテーブルには、アプリケーション内の役割(Admin、Guestなど)が含まれています。
Table 1: ROLE
-----------------------------------------------
role_id role_description
-----------------------------------------------
1 Admin
2 Guest
PERMISSIONSテーブルには、アプリケーションの権限が含まれています。
Table 2: PERMISSIONS
-----------------------------------------------
permission_id permission_description
-----------------------------------------------
1 Can create files
2 Can edit files
3 Can view files
ROLE_PERMISSIONSテーブルには、アプリケーションのさまざまなロールの権限が含まれています。以下のデータを例にとると、役割1(管理者)には権限1、2、および3(それぞれファイルの作成、編集、表示が可能)があることを意味します。
Table 3: ROLE_PERMISSIONS
-----------------------------------------------
role_id permission_id
-----------------------------------------------
1 1
1 2
1 3
2 3
ここで、クエリを理解してみてください。
SELECT t2.permission_description
FROM role_permissions as t1 JOIN permissions as t2
ON t1.permission_id = t2.permission_id
WHERE t1.role_id = 1
最初の行は、取得するデータを示しています。t2
列のテーブルから値を選択するように指示されていますpermission_description
。したがって、クエリの結果は次のようになります。
ファイルを作成できますファイルを
編集できますファイル
を表示できます
2行目と3行目は、データを取得する場所を示しています。role_permissions
とpermissions
ON
条件の結合テーブルからデータを取得するように指示されています。
t1.permission_id = t2.permission_id
注: AS
エイリアスが使用されることを示します。意味 t1
は、と同じ role_permissions
です。
上記のPERMISSIONSテーブルとROLE_PERMISSIONSテーブルから、ジョイントテーブルは次のようになります。
Table 4: Joint ROLE_PERMISSIONS and PERMISSIONS
------------------------------------------------------------------------
role_id permission_id permission_id permission_description
------------------------------------------------------------------------
1 1 1 Can create files
1 2 2 Can edit files
1 3 3 Can view files
2 3 3 Can view files
これは、データが取得されるテーブルです。
permission_description
これまでのところ、命令はジョイントテーブル(表4 )からを取得することです。
4行目は、最初の命令に制約を追加して、permission_description
sのみを選択しますWHERE
role_id = 1
。したがって、完全な命令は次のとおりです。
permission_description
が1であるジョイントテーブル(表4)からsを取得しますrole_id
。
平易な英語でこれは意味します:
ロール「管理者」の権限の説明を取得します。
したがって、クエリの結果は次のようになります。
Table 5: PERMISSION_DESCRIPTIONS of Admin
-----------------------------------------------
permission_description
-----------------------------------------------
Can create files
Can edit files
Can view files
これがお役に立てば幸いです。