用一条sql查询出菜单数以及菜单对应的角色关系

编程入门 行业动态 更新时间:2024-10-27 10:22:35

用一条sql查询出<a href=https://www.elefans.com/category/jswz/34/1769013.html style=菜单数以及菜单对应的角色关系"/>

用一条sql查询出菜单数以及菜单对应的角色关系

前几天公司要求将系统菜单树以及菜单对应的角色关系列出来做调整,所以写了如下SQL供参考


select TT.T1 一级菜单, TT.T2 二级菜单, TT.T3 三级菜单, TT.T4 四级菜单, group_concat(rel.role_code) 菜单角色
from (select m1.menu_name T1, m2.menu_name T2, m3.menu_name T3, m4.menu_name T4,(CASE WHEN m4.parent_code IS NULL THEN CASEWHEN m3.parent_code IS NULL THEN m2.parent_code -- 从最后一级菜单往上匹配没有parent_code的菜单(这里到二级菜单结束)ELSE m3.parent_code END ELSE m4.parent_code END) codefrom menu_test m1 left join menu_test m2 on m1.menu_code = m2.parent_codeleft join menu_test m3 on m2.menu_code = m3.parent_codeleft join menu_test m4 on m3.menu_code = m4.parent_code  -- 这里有几级菜单就关联几个where m1.level = '1' ) TT ,  -- 从一级菜单开始往下查询
role_meun_rel rel 
where TT.code = rel.menu_code
group by TT.T1, TT.T2, TT.T3, TT.T4

 查询效果如下:

一级菜单二级菜单三级菜单四级菜单菜单角色
一级菜单二级菜单(1)  XX10,XX20,XX30,XX99
一级菜单二级菜单(2)三级菜单(2)(1) XX20,XX99
一级菜单二级菜单(3)三级菜单(3)(1)四级菜单(3)(1)(1)XX30,XX99

以上查询涉及到菜单表、角色与菜单关系表   表结构如下(随便建的表仅供参考):

CREATE TABLE menu_test (`menu_code` varchar(10) CHARACTER  NOT NULL COMMENT '菜单编码',`level` varchar(2) CHARACTER  DEFAULT NULL COMMENT '菜单级别',`parent_code` varchar(10) CHARACTER  DEFAULT NULL COMMENT '父菜单编码',`menu_name` varchar(20) CHARACTER  DEFAULT NULL COMMENT '菜单名称',PRIMARY KEY (`menu_code`)
) COMMENT='菜单表';CREATE TABLE `role_meun_rel` (`role_code` varchar(20) CHARACTER DEFAULT NULL COMMENT '角色编码',`menu_code` varchar(20) DEFAULT NULL COMMENT '菜单编码',UNIQUE KEY `role_menu_index` (`role_code`,`menu_code`)
) COMMENT='角色与菜单关系表';

 

 

更多推荐

用一条sql查询出菜单数以及菜单对应的角色关系

本文发布于:2024-03-12 15:34:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1731830.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:菜单   角色   关系   sql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!