首页 > 解决方案 > MySQL查询上的子字符串

问题描述

我有两个相互关联的表。当我想查询显示departement_name每个请求者的所有内容时,问题就来了,但departement不止tbl_request一个,并且用逗号分隔。

tbl_request:

在此处输入图像描述

tbl_部门:

在此处输入图像描述

有可能像这样制作吗?如果不是,那么最好的方法是什么,至少是最接近的方法。

request_id    sow    request_type   date   requestor   departement
==================================================================
11          qwer       jk      2019-07-06  Lutfi       DevOps,Business Dev
12          adga       gadga   2019-07-06  sfags       RnD,DevOps

到目前为止,我没有对子字符串做任何事情。我只是在玩通常的查询。

SELECT
    tbl_request.request_id AS request_id,
    tbl_request.sow AS sow,
    tbl_request.request_type AS request_type,
    tbl_request.date AS date,
    tbl_request.requestor AS requestor,
    tbl_departement.departement_name AS departement_name
FROM
    `tbl_request`
LEFT JOIN 
    tbl_departement ON tbl_request.departement = tbl_departement.departement_id

标签: mysqldatabase

解决方案


加入 2 个表并按请求分组。然后使用group_concat()

select 
  r.request_id, r.sow, r.request_type, r.date, r.requestor,
  group_concat(d.department_name) departement
from tbl_request r inner join tbl_departement d
on concat('%,', r.department, ',%') like concat('%,', d.department_id, ',%')
group by r.request_id, r.sow, r.request_type, r.date, r.requestor, r.department

请参阅演示
结果:

| request_id | sow  | request_type | date       | requestor  | departement         |
| ---------- | ---- | ------------ | ---------- | ---------- | ------------------- |
| 12         | qwer | jk           | 2019-07-06 | Lufti Aldi | Business Dev,DevOps |
| 13         | adga | gadga        | 2019-07-13 | sfags      | RnD,DevOps          |

推荐阅读