2015-11-06 158 views
0

我有一些組。每個組都有一些元素,每個元素都有一個ID和一個NAME。MySQL:將CSV的ID列表轉換爲名稱的CSV列表

GROUPS 
|___________|_______________| 
|GROUP_NAME |ELEMENT_IDS | 
|___________|_______________| 
|ala  |15,16,18  | 
|bala  |18,15   | 
|coala  |16    | 

ELEMENTS 
|___________|_______________| 
|ID   |NAME   | 
|___________|_______________| 
|15   |foo   | 
|16   |bar   | 
|18   |car   | 

什麼樣的連接(在MySQL),我應該爲了做輸出如下:

|___________|_______________|_________________________________| 
|GROUP_NAME |ELEMENT_IDS |ELEMENT_NAMES     | 
|___________|_______________|_________________________________| 
|ala  |15,16,18  |foo,bar,car      | 
|bala  |18,15   |car,foo       | 
|coala  |16    |bar        | 
+1

今天的提示:從不將數據存儲爲逗號分隔的項目。這隻會導致你很多麻煩。 (每行一個值是SQL方式。) – jarlh

+0

我知道,但這是情況 – Serge

回答

1

http://sqlfiddle.com/#!9/3aff79/7

SELECT g.group_name, g.element_ids, 
GROUP_CONCAT(e.name) AS NAMES 
FROM GROUPS as g 
INNER JOIN ELEMENTS as e ON 
FIND_IN_SET(e.ID, g.ELEMENT_IDS) 
GROUP BY GROUP_NAME; 


| group_name | element_ids |  NAMES | 
|------------|-------------|-------------| 
|  ala | 15,16,18 | bar,foo,car | 
|  bala |  18,15 |  car,foo | 
|  coala |   16 |   bar | 

希望這有助於。