2016-03-12 264 views
1

我有表jeansbahanbenang,我想用group_concat将多个MySQL行连接成一个字段。 这是我的SQL代码:使用group_concat mysql

SELECT jeans.id_jeans, jeans.id_benang, GROUP_CONCAT(bahanbenang.warna 
SEPARATOR ', ') AS warna, GROUP_CONCAT(bahanbenang.jenis 
SEPARATOR ', ') AS jenis 
FROM jeans 
LEFT JOIN bahanbenang ON jeans.id_benang = bahanbenang.id_benang 
GROUP BY jeans.id_jeans 

给出以下结果:

result

我的主要问题是,为什么不能生成的查询返回多列warnajenis一个值?

我想要的结果是这样的:

table bahanbenang

*更新 荫试图THI查询

SELECT 
jeans.id_jeans, jeans.id_benang, 
GROUP_CONCAT(bahanbenang.warna SEPARATOR ', ') AS warna, 
GROUP_CONCAT(bahanbenang.jenis SEPARATOR ', ') AS jenis 
FROM jeans 
LEFT JOIN bahanbenang ON FIND_IN_SET(bahanbenang.id_benang, jeans.id_benang) = 1 
GROUP BY jeans.id_benang 

,但结果相同以下

enter image description here

+1

在单个列中存储ID列表是一个坏的,坏的,坏主意。这些ID是数字,不应将数字存储为字符串。 Ids应具有外键关系,并且字符串中的多个值不能具有外键关系。任何由此产生的查询都不能使用索引。重组您的数据以使用联结表。 –

回答

0

钍应该改进JOIN条件。尝试以下查询。

SELECT 
    jeans.id_jeans, jeans.id_benang, 
    GROUP_CONCAT(bahanbenang.warna SEPARATOR ', ') AS warna, 
    GROUP_CONCAT(bahanbenang.jenis SEPARATOR ', ') AS jenis 
FROM jeans 
LEFT JOIN bahanbenang ON FIND_IN_SET(bahanbenang.id_benang, jeans.id_benang) = 1 
GROUP BY jeans.id_benang 
+0

我试图使用您的查询,但结果相同 – faza

+0

更新了帖子。再试一次。 –