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;
原文地址:https://www.cnblogs.com/rsapaper/p/5837386.html