2015-02-07 95 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