Mysql 我想在一列中连接单元格
我想根据id和它们所属的员工将单元格连接到一列中 我的桌子是:Mysql 我想在一列中连接单元格,mysql,sql,Mysql,Sql,我想根据id和它们所属的员工将单元格连接到一列中 我的桌子是: evenement: id | title 1 | hello 2 | hi 3 | bye evenementontvanger: id | idEvent | idWerknemer 1 | 1 | 2 2 | 1 | 20 3 | 2 | 3 4 | 2 | 18 5
evenement:
id | title
1 | hello
2 | hi
3 | bye
evenementontvanger:
id | idEvent | idWerknemer
1 | 1 | 2
2 | 1 | 20
3 | 2 | 3
4 | 2 | 18
5 | 3 | 2
6 | 3 | 20
7 | 3 | 26
Werknemer:
idWerknemer | Initialen
2 | JD
3 | HA
18 | AD
20 | RC
26 | AJ
I would like to have an output like this for each different idEvent:
id | title | idEvent | idWerknemer | idWerknemer | Initialen | Initials
1 | hello | 1 | 2 | 2 | JD | JD,RC
1 | hello | 1 | 20 | 20 | RC | JD,RC
我曾尝试使用CONCAT_组,但这会同时连接所有的initialen
SELECT *
FROM `evenement` LEFT JOIN `evenementontvanger`
ON `evenementontvanger`.`idEvent` = `evenement`.`id`
LEFT JOIN `Werknemer` ON `Werknemer`.`Initialen`= `evenementontvanger`.`idWerknemer`
LEFT JOIN (SELECT `Initialen`,`idWerknemer`,
GROUP_CONCAT(`Initialen`) AS `Initials`
FROM `Werknemer` ) a
ON a.`idWerknemer` = `evenementontvanger`.`idWerknemer`
WHERE `idEvent`=`evenement`.`id`
AND `evenementontvanger`.`idWerknemer` =a.`idWerknemer`
您可以使用一个共同相关的子查询,它将在一个逗号分隔的列表中显示所有与事件相关的项,其中包含重复的事件列表,如所需的结果集中所示
SELECT *
,
(SELECT GROUP_CONCAT(ww.`Initialen`) FROM `Werknemer` ww
JOIN evenementontvanger evv
ON `ww`.`idWerknemer`= `evv`.`idWerknemer`
WHERE `evv`.`idEvent` = `e`.`id`
) INITIALENs
FROM `evenement` e
LEFT JOIN `evenementontvanger` ev
ON `ev`.`idEvent` = `e`.`id`
LEFT JOIN `Werknemer` w
ON `w`.`idWerknemer`= `ev`.`idWerknemer`
如果您需要显示不同的事件,您可以简单地这样做
SELECT *
,
(SELECT GROUP_CONCAT(`w`.`Initialen`))
INITIALENs
FROM `evenement` e
LEFT JOIN `evenementontvanger` ev
ON `ev`.`idEvent` = `e`.`id`
LEFT JOIN `Werknemer` w
ON `w`.`idWerknemer`= `ev`.`idWerknemer` GROUP BY e.id