2016-03-12 329 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

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