我從幾個表中選擇數據,但主要想法是產品可能有也可能沒有與之相關的折扣記錄,如折扣或美元折扣金額。我正在使用左外連接(這可能不正確),並且無論是否存在記錄,都會返回相同的美元值和百分比值。左外部加入丟失的記錄
查詢看起來像:
SELECT Items.ItemID, Items.name, Items.price,
ItemDiscounts.percentOff, ItemDiscounts.dollarOff,
ItemAttributes.ColorName, ItemStuff.StuffID
FROM Items, ItemAttributes, ItemStuff
LEFT OUTER JOIN ItemDiscounts
ON ItemDiscounts.ItemID = ItemID
AND (
ItemDiscounts.percentOff > 0
OR ItemDiscounts.dollarOff > 0
)
WHERE Items.ItemID = ItemAttributes.ItemID
AND ItemStuff.ItemID = Items.ItemID
GROUP BY ItemStuff.StuffID
怪異的是,在所有的結果,percentOff
返回「1」,而dollarOff
返回「0」,不管每個項目都有它自己的相關折扣紀錄。對於吐痰,我將ItemDiscounts.percentOff > 0
更改爲ItemDiscounts.percentOff > 1
,然後將dollarAmount
更改爲全部2,percentOff
全部爲0。
我對此有些困惑,所以任何幫助將不勝感激。
是否存在GROUP BY '或任何聚合函數(SUM,COUNT ..)在這裏沒有顯示? – Vatev 2012-07-24 18:37:37
有一個GROUP BY,是的,我嘲笑查詢使它更短並且不暴露實際的表/列名,將編輯顯示組 – 2012-07-24 18:39:51
試試選擇GROUP_CONCAT(ItemDiscounts.dollarOff)而不是ItemDiscounts.dollarOff來查看GROUP BY是否隱藏其中任何一個 – Vatev 2012-07-24 18:46:47