之前搜索过我的问题的答案,我找不到最符合我问题的解决方案。
我有一个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
所以至少这种方式可以匹配数据。但理想情况下,我更喜欢第一种方法。
答案 0 :(得分:-1)
尝试不使用concatinuat名字和姓氏,并使用GROUP BY