2012-04-12 60 views
0

我嘗試通過客戶組到我的訂單總額導出的Prestashop順序總SQL的Prestashop統計由客戶組

這是我的組N°3例如REQUEST:

SELECT ROUND(SUM(IFNULL(o.`total_paid_real`, 0)/cu.conversion_rate), 2) as totalMoneySpent 
FROM `ps_orders` o 
LEFT JOIN `ps_currency` cu ON o.id_currency = cu.id_currency 
LEFT JOIN `ps_customer` c ON c.id_default_group= 3 
WHERE o.valid = 1; 

其它版本(同樣的結果,將總集團)

SELECT ROUND(SUM(IFNULL(o.`total_paid_real`, 0)/cu.conversion_rate), 2) as totalMoneySpent 
FROM `ps_orders` o 
LEFT JOIN `ps_currency` cu ON o.id_currency = cu.id_currency 
#LEFT JOIN `ps_customer` c ON c.id_default_group=3 
WHERE o.valid = 1 
AND o.id_customer IN(SELECT c.id_customer FROM `ps_customer` c WHERE c.id_default_group=3) 
; 

我的問題是c.id_default_group永遠不變的結果,

感謝您的幫助

+0

我不知道的Prestashop什麼,但你可以從你的表和你預期的結果提供了一些示例數據,你可能(甚至人們不知道的Prestashop)得到社會各界更多的幫助: ) – 2012-04-12 18:28:35

回答

1
SELECT c.group_id, ROUND(SUM(IFNULL(o.`total_paid_real`, 0)/cu.conversion_rate), 2) as totalMoneySpent 
FROM `ps_orders` o 
LEFT JOIN `ps_currency` cu ON o.id_currency = cu.id_currency 
0

一旦你申請SUM你必須GROUP BY爲了得到總結果的行數(否則合計分別應用於每一行,擊敗自己的目的)的聚合函數。

SELECT c.group_id, ROUND(SUM(IFNULL(o.`total_paid_real`, 0)/cu.conversion_rate), 2) as totalMoneySpent 
FROM `ps_orders` o 
LEFT JOIN `ps_currency` cu ON o.id_currency = cu.id_currency 
LEFT JOIN `ps_customer` c ON c.id_default_group= 3 
WHERE o.valid = 1 
GROUP BY c.group 
ORDER BY c.group 

假設group_id標識您在問題中引用的客戶組。