「已注销」 2022-07-16 19:49 采纳率: 25%
浏览 66
已结题

查询所有角色下拥有的权限

有角色表t_role,角色与菜单中间表t_role_menu,菜单表t_menu,查询结果如下图!我想查询所有角色拥有的权限!角色与菜单表cid对应角色表的role_id,mid对应菜单表的id,菜单表一级菜单是0,二级菜单是pid,对应菜单表的id。不知道我这样描述能不能看的懂!

菜单表

CREATE TABLE `t_role_menu` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `cid` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '角色ID',
  `mid` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '菜单ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `cid` (`cid`,`mid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

角色表

CREATE TABLE `t_role` (
  `role_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `role_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '角色名称',
  `role_state` int(11) NOT NULL DEFAULT 0 COMMENT '角色状态',
  PRIMARY KEY (`role_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

角色与菜单中间表

CREATE TABLE `t_role_menu` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `cid` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '角色ID',
  `mid` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '菜单ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `cid` (`cid`,`mid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

img

img

  • 写回答

3条回答 默认 最新

  • bug_keng 2022-07-16 20:48
    关注
    
    SELECT
        r.role_name,
        mm.title as menu1,
        m.title as menu2
    
    FROM
        t_role r
        LEFT JOIN t_role_menu re ON r.role_id = re.cid
        LEFT JOIN t_menu m ON m.id = re.mid 
        LEFT JOIN t_menu mm ON m.pid = mm.id
    WHERE
        ( m.pid != 0 OR m.id IS NULL )
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月24日
  • 已采纳回答 7月16日
  • 修改了问题 7月16日
  • 修改了问题 7月16日
  • 展开全部

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮