質問: イメージ:チェーン店 phpでログイン時にuser_idを取得 その後、ユーザの持つ権限を一括で取得するSQLが分かりません。 例: ``` ・role「A店長」なら A店に対する機能A、機能B、機能C ・role「〇〇地区エリア長」なら 本店に対する機能A、機能D A店に対する機能A B店に対する機能A、機能B ``` テーブル構成 ``` ・user user_id, role_id ・role id, name ・role-auth id, store_id, auth_id ・auth id, name ・store id, name, address 例: ・user 1,3 ・role 3,〇〇地区エリア長 ・role-auth 3,1,1 3,1,4 3,2,1 3,3,1 3,3,2 ・auth 1, 追加 2, 更新 3, 削除 4, etc ・store 1, 本店, 〇〇町 2, A店, ××町 3, B店, △△町 ``` これを取得するSQLがどうなるのか分かりません。 最終的には二次元配列のような形でメモリ上に持っておきたいと思っています。 ``` user_id, role_id, role_name{ store_id, store_name{ auth_id, auth_name auth_id, auth_name auth_id, auth_name } store_id, store_name{ auth_id, auth_name auth_id, auth_name auth_id, auth_name } } ``` 根本的に何か勘違いしていたらすみません。
回答: ``` select * from user left join role on user.role_id = role.id left join role-auth on user.role_id = role-auth.id left join auth on role-auth.auth_id = auth.id left join store on role-auth.store_id = store.id ``` 取得は上記で可能だと思います。 配列に畳む部分をSQLで行いたいなら、(MYSQL)GROUP_CONCATを利用するというのも手だと思います。