将mysql结果连接到每个行结果的一个字段中

时间:2016-10-24 10:43:10

标签: mysql symfony csv

之前搜索过我的问题的答案,我找不到最符合我问题的解决方案。

我有一个Symfony2 CRM,它从OpenCart 1数据库中的定制表中提取Jobs,但它也从其他表中收集数据,如产品,客户和属性。

我的问题是,因为单个产品有多个属性,我在结果中得到重复的行,我需要导出CSV但是在一行中收集属性。

这是我目前的陈述:

SELECT pd.name AS product_name, u.name AS staff_name, CONCAT(c.firstname, ' ', c.lastname) AS customer_name, 
s.stage AS stage_name, p.quantity, p.order_date, p.completion_date, p.PO_number, p.order_number, pa.text AS attribute_value, 
ad.name AS attribute_name 
FROM project p JOIN oc73_product_description pd ON pd.product_id = p.product_id 
JOIN user u ON u.id = p.staff_id JOIN stage s ON s.id = p.current_stage 
JOIN oc73_customer c ON c.customer_id = p.customer_id 
JOIN oc73_product_attribute pa ON pa.product_id = pd.product_id 
JOIN oc73_attribute_description ad ON ad.attribute_id = pa.attribute_id

这很好用,但对于每个单独的属性,我得到一个新行,因此重复结果。我尝试GROUP_CONCAT他们,但是当我真的只想要该结果字段中的产品属性时,我只在一个字段中得到一个包含ALL属性的结果。

有没有办法修改这个sql所以我可以实现我想要的?我真的不想写两个语句,因为这些数据将用于导出CSV,如果可能的话,我需要一个结果集中的所有行。

编辑:下面是我希望如何查看属性字段的示例。

  

A:2.00,B:1.60,C:1.72

其中A,B和C是属性名称,数字是值。

我也很满意两个领域,如:

  

A,B,C | 2.00,1.60,1.72

所以至少这种方式可以匹配数据。但理想情况下,我更喜欢第一种方法。

1 个答案:

答案 0 :(得分:-1)

尝试不使用concatinuat名字和姓氏,并使用GROUP BY