MS SQL を使用しています。私は2つのテーブルを持っています:
1) "OrderProducts" - このテーブルには、注文に含まれるすべての製品が格納されます。Orders メイン テーブルがもう 1 つありますが、この図からは省略できます。Orders メイン テーブルには注文のメイン データが格納され、OrderProducts テーブルには詳細が格納されます。
2) "TransactionFeeProducts" - このテーブルには、注文に対して請求するすべての製品の取引手数料が格納されます。これには BatchID があり、複数の製品が同じ BatchID を持つことができます。
基本的に、OrderDate が TransactionFeeProducts.FromDate と TransactionFeeProducts.ToDate の間にあるすべての注文商品は、TransactionFeeProducts.TransactionFee が請求されます。
注文商品
- 製品番号
- 量
- 注文日
取引手数料商品
- バッチID
- 製品番号
- 開始日
- 現在まで
- 取引手数料
SQL:
SELECT SUM(Quantity) as Orders,
TransactionFeeProducts.ProductID, FromDate, ToDate
FROM TransactionFeeProducts
LEFT JOIN OrderProducts ON TransactionFeeProducts.ProductID = OrderProducts.ProductID
WHERE
OrderDate >= TransactionFeeProducts.FromDate AND
OrderDate <= TransactionFeeProducts.ToDate AND
TransactionFeeProducts.BatchID = 3
GROUP BY TransactionFeeProducts.ProductID, FromDate, ToDate
ORDER BY SUM(Quantity) DESC
SQL で BatchID = 3 の TransactionFeeProducts のすべてのレコードを返すようにします。
SUM(Quantity) が 0 の場合、フィールドは NULL または 0 である必要があります。
私の問題は、SUM(Quantity) が 0 の場合、SQL がレコードを返さないことです。
助けてください。どうもありがとうございました。