有角色表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;
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 )
给的信息太少了
麻烦把表的sql贴出来