create view in view
CREATE VIEW view_region2role AS ( SELECT region_set_id, region_set_name, GROUP_CONCAT(id) gc_id, GROUP_CONCAT(name) gc_name FROM view_region_role GROUP BY region_set_id )
#总结 角色表-关系表-区域表 N-N 关系表 结构 主键id-角色id-区域id集 现在要处理为单个区域分配角色
#处理办法 ; 如果为单个角色分配区域,即可直接更新关系表某行或新增行(命名为w顺向关系表操作w);当前问题;将w逆向向关系表操作w转化为顺向关系表操作
#转化办法;该关系表打散成单行,形成“一行为一个区域一个角色”,此时关系表对于角色表和区域表都是地位平等的,再转化成单区域-多角色表
# 角色表 LEFT JOIN 关系表 (关键点在左联条件,LIKE CONCAT)---》GROUP_CONCAT 即形成顺向操作临时表---》对该临时表读写---》在退化成、逆转录成原关系表关系,再更新读写原关系表
1 DROP TABLE IF EXISTS `region_set`; 2 CREATE TABLE `region_set` ( 3 `region_id` int(11) NOT NULL AUTO_INCREMENT, 4 `region_name` varchar(33) NOT NULL, 5 PRIMARY KEY (`region_set_id`) 6 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 7 8 9 DROP TABLE IF EXISTS `region_set`; 10 CREATE TABLE `role` ( 11 `role_id` int(11) NOT NULL AUTO_INCREMENT, 12 `role_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT '' 13 PRIMARY KEY (`role_id`) 14 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 15 16 17 DROP TABLE IF EXISTS `r_role_region`; 18 CREATE TABLE `r_role_region` ( 19 `id` int(11) NOT NULL AUTO_INCREMENT, 20 `role_id` int(11) NOT NULL, 21 `region_id_set` tinytext, 22 PRIMARY KEY (`id`) 23 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;