いくつかのテーブルからデータを選択していますが、主な考え方は、製品には、割引率またはドル割引額として関連付けられた割引レコードがある場合とない場合があるということです。左外部結合 (間違っている可能性があります) を使用していますが、レコードが存在するかどうかに関係なく、ドルとパーセントの値に同じ値が返されます。
クエリは次のようになります。
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」を返し、「0」を返すことです。dollarOff
唾の場合は、 に変更ItemDiscounts.percentOff > 0
してからItemDiscounts.percentOff > 1
、dollarAmount
すべて 2に変更し、percentOff
すべて 0 でした。
私はこれにやや困惑しているので、助けていただければ幸いです。