繁体   English   中英

使用 Mysql - 左连接三个表的问题得到重复的 group_concat 结果

[英]With Mysql - Problem with left join three tables getting duplicated group_concat results

我有以下表格,我想通过 left join 和 group_contact 加入

主表

+--------+---------+
| cedula | nombre  |
+--------+---------+
| 002    | Eduardo |
| Hola   | Carlos  |
+--------+---------+

maintable_msel_sex1

+--------+------+--------------------------------------+
| cedula | sex1 | rowuuid                              |
+--------+------+--------------------------------------+
| 002    |    1 | 4ccc2b41-e72a-4d55-b167-17a41c18b29b |
| 002    |    2 | 89323daa-4ad4-4b43-9ecc-22d4fdd8fef1 |
| Hola   |    1 | 9e7b4da0-2a93-4c82-80eb-3172bb163536 |
+--------+------+--------------------------------------+

maintable_msel_sex2

+--------+------+--------------------------------------+
| cedula | sex2 | rowuuid                              |
+--------+------+--------------------------------------+
| 002    |    2 | 122123d3-aa5e-42b5-8ddd-0e5d700bd92c |
| 002    |    1 | 462c8138-37b1-42bd-a0c8-4a63d9e67dda |
| Hola   |    1 | 8d96c9c8-4633-4425-8f27-59591bee8954 |
| Hola   |    2 | bbe42e16-fc9d-4e1d-825d-1eb59161f2fb |
+--------+------+--------------------------------------+

maintable_msel_crops

+--------+-------+--------------------------------------+
| cedula | crops | rowuuid                              |
+--------+-------+--------------------------------------+
| 002    |     3 | 404e7f5c-fb07-4d43-85a8-6c86c5407546 |
| Hola   |     3 | 423d1d06-9be4-4d47-a5be-8407db4c258b |
| 002    |     4 | 6d27aa7f-b6d2-426b-9c05-c20f88d97d7b |
| 002    |     1 | 7673127b-72ed-45fd-8688-8f6942abeaa0 |
| Hola   |     1 | 80f84fbe-ad47-4178-8577-eaa82562abaa |
+--------+-------+--------------------------------------+

我尝试使用以下 select 加入他们:

SELECT maintable.cedula,GROUP_CONCAT(maintable_msel_sex1.sex1) as sex1, GROUP_CONCAT(maintable_msel_sex2.sex2) as sex2, GROUP_CONCAT(maintable_msel_crops.crops) as crops
FROM maintable 
LEFT JOIN maintable_msel_sex1 ON maintable.cedula = maintable_msel_sex1.cedula
LEFT JOIN maintable_msel_sex2 ON maintable.cedula = maintable_msel_sex2.cedula
LEFT JOIN maintable_msel_crops ON maintable.cedula = maintable_msel_crops.cedula
GROUP BY  maintable.cedula;

但我得到:

+--------+-------------------------+-------------------------+-------------------------+
| cedula | sex1                    | sex2                    | crops                   |
+--------+-------------------------+-------------------------+-------------------------+
| 002    | 1,1,1,1,1,1,2,2,2,2,2,2 | 1,1,1,2,2,2,1,1,1,2,2,2 | 1,3,4,1,3,4,1,3,4,1,3,4 |
| Hola   | 1,1,1,1                 | 1,1,2,2                 | 1,3,1,3                 |
+--------+-------------------------+-------------------------+-------------------------+

我想得到:

+--------+-------------------------+-------------------------+-------------------------+
| cedula | sex1                    | sex2                    | crops                   |
+--------+-------------------------+-------------------------+-------------------------+
| 002    | 1,2                     | 1,2                     | 1,3,4                   |
| Hola   | 1                       | 1,2                     | 1,3                     |
+--------+-------------------------+-------------------------+-------------------------+

我尝试使用 INNER JOIN 和 RIGHT JOIN 并且只使用一个 JOIN 和 () 中的多个表,但我只是没有得到这样的结果。

我可以在 group_concat 中使用 distinct 作为补丁,但我不明白为什么我会得到重复的结果。

任何帮助表示赞赏

如果我正确理解您的问题,您希望每个值在GROUP_CONCAT中只有一次。 为此,您可以使用DISTINCT

SELECT
  maintable.cedula,
  GROUP_CONCAT(DISTINCT maintable_msel_sex1.sex1) as sex1,
  GROUP_CONCAT(DISTINCT maintable_msel_sex2.sex2) as sex2,
  GROUP_CONCAT(DISTINCT maintable_msel_crops.crops) as crops
FROM maintable 
  LEFT JOIN maintable_msel_sex1 ON maintable.cedula = maintable_msel_sex1.cedula
  LEFT JOIN maintable_msel_sex2 ON maintable.cedula = maintable_msel_sex2.cedula
  LEFT JOIN maintable_msel_crops ON maintable.cedula = maintable_msel_crops.cedula
GROUP BY  maintable.cedula;

有关更多信息,请参见GROUP_CONCAT() 上的 MySQL DISTINCThttp://dev.mysql.com/doc/refman/5.0/en/group-concat-函数信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM