最近遇到一种情况,某个申请单有一个主要负责人,多个协作处理人,在这种情况下我们一般的做法是把主要负责人id直接存在申请单据里面,然后新增一个中间表A来存储协作人id(或者全部存储在新增的中间表A里面),但是由于数据库表太多,切协作人id一般只在统计是才有意义,所以直接在申请单据里面新增一个协作人字段存储所有的协作人id。
表结构大致如下:
申请单application:
liable_id | AAA |
coo_id | a,b,c |
字段 | 值 |
用户表user:
字段 |
user_id |
user_name |
查询可以使用:
select GROUP_CONCAT(b.user_name) as user_name_concat from application a
LEFT JOIN user b on FIND_IN_SET(b.user_id,a.coo_id)>0;
直接将存储了多个用户id的coo_id字段的id查找出用户名字方便展示。
也可使用:
select b.user_name from application a
LEFT JOIN user b on FIND_IN_SET(b.user_id,a.coo_id)>0;
查找出多条数据用于统计。