2016-10-24 45 views
0

已經搜索了我以前的問題的答案,我找不到最適合我的問題的解決方案。將mysql結果連接到每個行結果的一個字段中

我有一個Symfony2的CRM這在喬布斯拉從定製表中的Opencart的1個數據庫,但它也從其它表,如產品,客戶和屬性收集數據。

我的問題是,因爲有多個屬性的單品,我得到的結果重複行,我需要在一行中導出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他們,但後來我只有一個結果與單個字段中的所有屬性,當我真的只想在該結果字段中的產品的屬性。

有沒有修改這個SQL這樣我就可以達到我想要的一種手段?我真的不想編寫兩條語句,因爲這些數據將用於導出CSV,並且如果可能的話,我需要在一個結果集中包含所有行。

編輯:下面是我怎麼樣的屬性字段來看看一個例子。

甲:2.00,B:1.60,C:1.72

其中A,B和C是屬性名稱和號碼的值。

我還與兩個字段開心就好了,就像這樣:

A,B,C | 2.00,1.60,1.72

所以至少這樣數據可以匹配起來。但理想情況下,我更喜歡第一種方法。

+0

請提供一個例子期望的結果應該是什麼樣子像 – SBH

回答

-1

嘗試沒有concatinuat姓和名,並使用GROUP BY

+0

這是不是解決方案,分組不會將屬性數據放入一個字段。 –

0

也使用GROUP_CONCAT後,您應該使用到底group by attribute_value

+0

但我需要匹配的屬性名稱的值,他們在兩個不同的表。這些值引用產品,屬性名稱引用值表中的attribute_id。 –

+0

在屬性名稱和屬性值上使用group_concat,然後按屬性名稱組 –

+0

它不起作用,因爲結果集小於應該的值。另外,它把所有作爲一個字段然後在另一個等 –

相關問題