将数据分组到sql中的一个变量中

时间:2012-02-28 14:58:40

标签: php sql

不太确定这个标题是否真正解释了我真正需要提出的问题,所以我很抱歉。

基本上,我有两张桌子(产品和库存)。

在产品方面,我有两种产品:

  

ID:1 ||名称:顶部   ID:2 ||名称:底部

有货,我有五条库存线:

  

ID:1 ||产品ID:1 ||尺寸:中等
  ID:2 ||产品ID:1 ||尺寸:大号   ID:3 ||产品ID:2 ||尺寸:中等
  ID:4 ||产品ID:3 ||尺寸:7
  ID:5 ||产品ID:3 ||大小:8

我需要做的是提取所有有库存的产品,因此我的代码目前是:

SELECT p.ID, p.Name, s.Size FROM products p JOIN stock s ON s.ProductID = p.ID

然后将以下内容拉出来:

  

ID:1 ||名称:顶部||尺寸:中等
  ID:1 ||名称:顶部||尺寸:大号   ID:2 ||名称:底部||尺寸:中等
  ID:3 ||名称:鞋子||尺寸:7
  ID:3 ||名称:鞋子||大小:8

我想要做的是将每个ID的大小放在一列(逗号分隔)中 - 因此我希望它看起来像:

  

ID:1 ||名称:顶部||尺寸:中,大号   ID:2 ||名称:底部||尺寸:中等
  ID:3 ||名称:鞋子||大小:7,8

有谁知道我怎么做到这一点?我应该知道怎么做,但我的思绪已经空白了!

2 个答案:

答案 0 :(得分:1)

SELECT p.ID, p.Name, GROUP_CONCAT(s.Size) AS Size 
FROM products p 
JOIN stock s ON s.ProductID = p.ID 
GROUP BY p.ID

这应该可以正常工作。

答案 1 :(得分:0)

如果您的数据库是mysql,请使用GROUP_CONCAT。

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