2015-02-07 54 views
0

我有在SQL數據庫中的兩個表的產品銷售以逗號分隔字符串。如何選擇列值在SQL

productId name 
1   a 
2   b 
3   c 

Sale 
ID productId sale 
1  1  5 
2  2  10 
3  1  20 
4  1  50 

現在我想用兩個表我使用需要了把這個格式的SQL:

productId name sale 
1   a  5,20,50 
2   b  10 

u能PLZ任何一個可以告訴我怎麼才能讓我的銷售列淡水河谷爲逗號separted使用sql查詢的值。

回答

4

你可以做的產品和銷售之間的連接如下:

SELECT P.productId, P.name, GROUP_CONCAT(sale) AS 'sale' 
FROM product AS P INNER JOIN sale AS S 
ON S.productID=P.productID 
GROUP BY P.productId; 

見小提琴here

+0

不錯的例子!我將不得不在我回答的下一個問題上嘗試一下。 – 2015-02-07 15:51:05

+1

謝謝。是的,這證明你的查詢確實有效,併爲OP的保險;) – SMA 2015-02-07 15:52:09

+0

其工作正常..感謝很多爲您的答案 – sam140 2015-02-07 16:49:42

0

如果你正在使用MySQL可以使用GROUP_CONCAT:

SELECT P.productId, P.name, S.GROUP_CONCAT(sale) 
FROM product AS P 
LEFT JOIN sale AS S 
ON S.productID=P.productID 
GROUP BY P.productId; 

http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_group-concat

+0

爲什麼在這裏使用'LEFT JOIN'? – 2015-02-07 15:35:26

+0

LEFT JOIN是指定我們正在進行的連接的更具體的方式。 INNER JOIN將省略結果中沒有任何銷售的產品。 – 2015-02-07 15:37:19

+0

順便說一句,因爲你用同一個名字在兩個表中指定了'productID',所以你可以說USING(productID)而不必說ON S.productID = P.productID – 2015-02-07 15:38:30