存储过程中的for循环
For loop in stored procedure
我有三个表,角色,role_privillages 和模块:
roles
id name
1 Super admin
2 Sub admin
3 Viewer
role_privillages
id role_id module_id
1 1 1
2 1 2
3 1 3
4 2 1
5 2 4
6 3 3
7 3 1
modules
id name
1 Users management
2 Roles Management
3 Content Management
4 Texture Management
经过运行一个程序,我应该得到如下结果
id name assigned_modules
1 Super Admin Users management, Roles management, Content Management
2 Sub Admin Users management, Texture management
3 Viewer Content Management, User Management
是否可以通过存储过程实现?这样的程序执行时间会不会太长?
像这样的东西应该可以工作,您可以根据需要在视图或过程中定义它:-
select
r.id
, r.name
, group_concat(m.name) as assigned_modules
from roles r
inner join role_privileges p on r.id = p.role_id
inner join modules m on m.id = p.module_id
group by r.id, r.name
所以,回答你的问题:
- 是的,在存储过程中甚至在视图中都是可能的
- 执行时间取决于许多因素(索引、数量
数据 etc.etc.)
我有三个表,角色,role_privillages 和模块:
roles
id name
1 Super admin
2 Sub admin
3 Viewer
role_privillages
id role_id module_id
1 1 1
2 1 2
3 1 3
4 2 1
5 2 4
6 3 3
7 3 1
modules
id name
1 Users management
2 Roles Management
3 Content Management
4 Texture Management
经过运行一个程序,我应该得到如下结果
id name assigned_modules
1 Super Admin Users management, Roles management, Content Management
2 Sub Admin Users management, Texture management
3 Viewer Content Management, User Management
是否可以通过存储过程实现?这样的程序执行时间会不会太长?
像这样的东西应该可以工作,您可以根据需要在视图或过程中定义它:-
select
r.id
, r.name
, group_concat(m.name) as assigned_modules
from roles r
inner join role_privileges p on r.id = p.role_id
inner join modules m on m.id = p.module_id
group by r.id, r.name
所以,回答你的问题:
- 是的,在存储过程中甚至在视图中都是可能的
- 执行时间取决于许多因素(索引、数量 数据 etc.etc.)