2016-06-27 8 views
0

私は、MySQLの行に動的な列から次のデータベーステーブルを変換したい:MySQLピボットテーブル - 動的列を行に変換する方法は?

は、私はすでにstackoverflow.comのと同様に、この偉大な例hereで深く見ていたが、例どれも私の要件と一致しません。
それは、動的だろう場合は、上記のリンクから示された例は私の要件に合っているでしょう(それが動的に変化するので、私は、値「色」または「サイズ」を知らない):

SELECT 
item_id, 
MAX(IF(property_name = 'color', value, NULL)) AS color, 
MAX(IF(property_name = 'size', value, NULL)) AS size, 
... 
... 
... 
FROM 
properties 
GROUP BY 
item_id; 


だから、この私のデータベーステーブルです:

id | customer_id | customer_tbl_id | customer_tbl_col_name 
1 |   1 |    1 | CustomerColName_1 
2 |   1 |    1 | CustomerColName_2 
3 |   1 |    1 | CustomerColName_3 
4 |   1 |    2 | CustomerColName_4 
5 |   1 |    2 | CustomerColName_5 
6 |   2 |    1 | CustomerColName_6 
7 |   2 |    1 | CustomerColName_7 

今私のSQLクエリの結果は次のようにする必要があります:

1 (customer_id) | 1 (customer_tbl_id) | CustomerColName_1 | CustomerColName_2 | CustomerColName_3 
1 (customer_id) | 2 (customer_tbl_id) | CustomerColName_4 | CustomerColName_5 
2 (customer_id) | 1 (customer_tbl_id) | CustomerColName_6 | CustomerColName_7 

答えて

0

使用GROUP_CONCAT私が探していたまさに

SELECT customer_id, customer_tbl_id, GROUP_CONCAT(customer_tbl_col_name) as customer_tbl_col_name 
FROM table 
GROUP BY customer_id , customer_tbl_id 
+0

。どうもありがとう。あなたは私に多くの時間を救った! – njlqay

+0

2つのフィールドを結合するには:GROUP_CONCAT(DISTINCT concat(field1、 "、"、 "field2)) – tyro

関連する問題