数据库怎么存有横纵坐标的数据

img

三个红框,出现的条件都不一样,前面还有一个限制条件,当我选择寿险的时候出现第一个,选择车险的时候出现第二个,选择非车财险的时候出现第三个。

竖排的内容每个险种都一样,但是每一行不一样,就有可能还有五级六级七级业务员,这个业务员的列数也是根据另外一个B表查询得出来的。

流程的话:1、选择险种;2、去B表查询有多少个业务员级别;3、展示到这个页面;4、在每个格子上填写数字,然后发送给后台保存。

怎么在一个表里面存储这种第一列固定的数据(你说他固定吧,但是险种不一样他又不固定)。

三个表
项目职级表:职级ID、项目名称、险种
业务等级表:等级ID、等级名称、险种
业务配置表:等级ID、职级ID、配置值

sql:
select a.项目名称,c.等级名称,b.配置值
from 项目职级表 a left join 业务等级表 c on c.险种=a.险种
left join 业务配置表 b on b.职级ID=a.职级ID and b.等级ID=b.等级ID
where a.险种=寿险

上面是一个线性查询,如果要变成图所示格式,最好程序中通过代码转换

MySQL为例,上述表格和修改都很好处理

CREATE TABLE `业务员表` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '业务员主键',
  `nick` varchar(32) NOT NULL COMMENT "业务员称呼",
  `base_salary` bigint(20) NOT NULL COMMENT '基本薪水-分',
  // 其他字段
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='业务员表';


CREATE TABLE `业务员险种手续费细分表` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '细分表id',
  `service_id` bigint(20) NOT NULL COMMENT '业务员主键',
  `insurance_type` int(8) NOT NULL COMMENT '保险类型 1:寿险 2:车险 3:非车财险(代码里用枚举记录即可)',
  `sub_type` int(8) NOT NULL COMMENT '手续费细分类型 1:图中11中细分类型(同上代码使用枚举记录)',
  `cost` bigint(20) NOT NULL COMMENT '费用-分'
  // 其他字段
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='业务员险种手续费细分表';