对于存储过程中的循环

时间:2015-01-12 12:20:04

标签: mysql stored-procedures

我有三个表,角色,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

是否可以通过存储过程?这种程序会占用太多的执行时间吗?

1 个答案:

答案 0 :(得分:1)

这样的东西应该可以使用,您可以根据需要在视图或过程中定义: -

   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

所以,回答你的问题:

  • 是的,可以在存储过程中,甚至在视图中
  • 执行时间取决于许多因素(索引,数量) 数据等。)
相关问题