2013-08-06 90 views
2

這裏是sqlfiddle link
我正在嘗試使用sum()函數。它的工作只是SELECT查詢,但它給出錯誤的值,當我嘗試這樣子查詢的UPDATE query.Here我SELECT查詢在mysql中GROUP BY sum()函數的更新查詢問題

SELECT 
    sum(i.pr_pur_cost_price*i.quantity) AS net_amount 
FROM 
    product_purchases AS p 
LEFT JOIN 
    product_purchase_item AS i 
ON 
    p.product_purchase_item_id=i.product_purchase_item_id 
WHERE 
    p.insert_operation=48 
GROUP BY 
    p.insert_operation 

這裏我更新查詢

UPDATE 
    shop_balance AS s 
SET 
    s.shop_balance=(s.shop_balance-(
     SELECT 
     sum(i.pr_pur_cost_price*i.quantity) as net_amount 
     FROM 
     product_purchases AS p 
     LEFT JOIN 
     product_purchase_item AS i 
     ON 
     p.product_purchase_item_id=i.product_purchase_item_id 
     WHERE 
     p.insert_operation=48 
     GROUP BY 
     p.insert_operation 
    ) 
    ) 
where s.shop_balance_id=n;  

爲什麼更新詢問這個錯誤的值。 sum()函數中的兩列是否存在問題?或任何最佳解決方案?

+2

你能否展示一些樣本數據和所需的(正確)結果? –

+0

我的第一個SELECT查詢返回一個FLOAT數據類型假設2200.如果我的s.shop_balance是2500.它應該返回300.但它給出錯誤的值 – Imran

+0

'where s.shop_balance_id = n;' - 是「n」是一個有效的shop_balance_id? –

回答

1

這是一樣的問題嗎?

MYSQL Update using sum() result across multiple tables

update語句不允許GROUP BY,這將是一個問題,如果你刪除它。

很抱歉,我無法確定它是否會成爲您的情況中的問題,但我無法在更新語句的上下文中理解它的必要性。

你可以嘗試刪除它們或添加它們,它不構成實際更新語句本身的一部分嗎?

+0

[sqlfiddle](http://sqlfiddle.com/ #!2/1fd55/1)正在工作。但在我的本地主機上工作 – Imran

+0

事實並非如此。他正在爲上述問題的海報做些什麼。 –

+0

一旦有一個過濾器只選擇一個特定的插入操作,這個羣組是否會有所作爲,而在sqlfiddle中,爲了保證清晰度,您將其設置爲Mysql? – skv