如何将结果分组到同一行:使用MySQL进行多对多关系

时间:2013-01-14 11:28:40

标签: mysql sql

我有2个表通过多对多关系连接,我创建第3个表,我有一个像这样的查询:
    

SELECT  product.product_name, provider.provider_name 
FROM  product, provider, provider_product 
WHERE product.id_product = provider_product.ref_product 
AND provider.id_provider = provider_product.ref_provider 

我需要按product_name对结果进行分组,结果必须在同一行中,如下所示:如果产品有很多提供者: 我的结果将是:

product.product_name | provider.provider_name
this is my first product 1   | this is provider1 / this is provider2 / this is provider3 

如您所见,提供商位于同一行,他们按/分割

1 个答案:

答案 0 :(得分:1)

使用GROUP_CONCAT()功能。

SELECT  product.product_name, GROUP_CONCAT(provider.provider_name SEPARATOR '/') 
FROM  product, provider, provider_product 
WHERE product.id_product = provider_product.ref_product 
AND provider.id_provider = provider_product.ref_provider 
GROUP BY product.product_name