我有三個表,我們將假裝稱爲產品,優惠券和折扣。我有一個試圖拉取產品列表的查詢,並運行一個子查詢來查找有效折扣的任何優惠券。來自子查詢和問題組的MySQL最大值
例如,這說明什麼,我嘗試:
SELECT products.id, products.name,
(
SELECT MAX(discounts.amount) FROM discounts
WHERE discounts.coupon_id = coupons.id
LIMIT 1
) as discount
FROM products
LEFT JOIN coupons ON products.id = coupons.product_id
GROUP BY products.id
我的問題是,我GROUP BY是必要的很多其他原因。但是,如果每個產品都有多個優惠券,則在發生分組時,「折扣」會以奇怪的方式結合使用。
假設單件產品有三張優惠券 - 兩張沒有任何折扣,一張打折率爲33%。當出現羣組時,我想選擇最高值,但默認情況下,MySQL將該值返回爲0.
使用MAX是子查詢顯然只返回每個單獨優惠券的折扣的最大值。我只需告訴GROUP BY使用最大值。
我可以很容易地使用GROUP_CONCAT返回所有這些字符串,但我也需要在某些HAVING條件下使用該值進行計算。
有什麼建議嗎?
不幸的是,它並不像這樣容易。我會使用連接,但實際上有四個子查詢 - 每個查詢可能有不同類型的折扣。我似乎不可能以一種不需要每個產品都具有全部四個連接的方式來構建連接。子查詢使這種情況更容易/可能。我想我會玩更多。 – helion3 2011-01-10 20:14:27