これが私のシナリオです
次のフィールドを持つ権限テーブルがあります。
id | module | permission
1 | client | add
2 | client | edit
3 | client | delete
4 | someth | edit
5 | someth | delete
従業員テーブル
id | status | somestatus
1 | act | 1
2 | den | 1
3 | act | 0
4 | den | 1
5 | act | 0
6 | act | 1
ここで私がする必要があるのは、status="act" と somestatus=1 を持つ従業員を選択し、module="client" のすべての権限を与えることです。
したがって、テーブル employee_permissions にはこれらの行が必要です
id | empid | permid | permvalue
1 | 1 | 1 | 1
2 | 1 | 2 | 1
3 | 1 | 3 | 1
1 | 6 | 1 | 1
2 | 6 | 2 | 1
3 | 6 | 3 | 1
これは私が試したクエリで、ここで立ち往生しています
INSERT INTO at2_permission_employee (employee_id,permission_id)
SELECT at2_employee.employee_id as employee_id
, (SELECT at2_permission.permission_id as permission_id
FROM at2_permission
where at2_permission.permission_module='client'
)
from at2_employee
where at2_employee.employee_status='Active'
and at2_employee.employees_served_admin = 1;
サブクエリが複数の行を返すというエラーが表示されますが、これは理にかなっています。しかし、サブクエリによって返された行を反復処理するためにクエリを変更する方法がわかりません