2015-09-14 71 views
1

我有數據在MySQL這樣設置:從逗號創建列表在mysql中分離關鍵

table order 
order_id item_id   
1   A,B,C 
2   B,D,E 

table item 
item_id item_name 
A   Candy 
B   Beer 
C   Cookies 
D   Jam 
E   Cigarette 

我怎樣才能返回數據是這樣的:

order_id item_id item_name 
1   A,B,C  Candy,Beer,Cookies 
2   B,D,E  Beer,Cookies,Cigarette 
+0

應該不是第2行是 「啤酒,果醬,煙」? – vhu

+0

這聽起來像健康的飲食,whaddya認爲@vhu。只要求求非KEYWORD或RESERVED WORD的問題出現 – Drew

+0

'訂單'表的設計很差。您應該考慮在訂單中每個商品有一行,可能是在'order_items'表中。 –

回答

1

您可以嘗試以下查詢 -

SELECT o.order_id, o.item_id, GROUP_CONCAT(itm.item_name) 
FROM `order` AS o JOIN item AS itm ON FIND_IN_SET(itm.item_id,o.item_id) 
GROUP BY o.order_id; 
+0

但它沒有優化的方式,你應該使用兩個表關係的聯結表來獲得更好的性能。 –

-1

嘗試......

select o.order_id, o.item_id, GROUP_CONCAT(i.item_name SEPERATOR separator ',') 
FROM order o 
INNER JOIN item i ON on (find_in_set(i.item_id,o.item_id)) 
GROUP BY o.order_id