2011-05-27 167 views
0

我想創建一個查詢,它會在一些折扣已經取消它的初始值後給我一個產品的價值。MySQL - 在計算中使用GROUP_CONCAT值?

這是我到目前爲止的簡化版本:

SELECT 
p.price 
GROUP_CONCAT(d.amount) AS discounts 
FROM products p 
LEFT OUTER JOIN discounts d 
ON d.product_id = p.id 
GROUP BY p.id 

凡discounts.amount是一個十進制值。

編輯:例如,如果存在與值分別爲10和15的兩個對應的折扣和初始產品價格爲50,計算將我可以執行計算查詢內返回25

有反正我想要什麼?

任何意見將不勝感激。

謝謝。

+0

您可以發佈示例數據和預期的結果? – piotrm 2011-05-27 15:36:14

回答

1

有一個SUM()方法:

SELECT p.price, 
     p.price - COALESCE(SUM(d.amount), 0) as discounted_price, 
     GROUP_CONCAT(d.amount) AS discounts 
FROM products p 
LEFT OUTER JOIN discounts d 
ON d.product_id = p.id 
GROUP BY p.id 
+0

我想我可能會得到這個來做我需要的,謝謝! – Dan 2011-05-27 15:51:07

+0

在沒有COALESCE的情況下工作。 – Dan 2011-05-27 15:58:37

+0

我添加了coalesce,因爲我不確定MySQL如何在打折時找不到匹配的連接時作出反應。如果這導致null(如Postgres中所做的那樣),則需要合併以避免獲得null值作爲discounted_price。 – 2011-05-27 16:00:09