2016-05-25 5 views
-1

こんにちは私は2つのテーブル(在庫と販売)があります。私は左のテーブルからすべてのレコードを返す必要がありますどこの句でレコードが存在しない場合でも

私は、特定の日付範囲内の合計売上高を持つ在庫の現在のビューを、両方のテーブルでSKUが使用可能なSKUによって取得しようとしています。また、日付範囲内に売上がなくても(where句に存在しない場合でも)SKUが返されるようにしたいと考えています。

私は "Between"日付where句を使用しようとしましたが、その週に販売されたSKUを返すだけです。また、週に販売されなかったSKUも含めたいと思っています.Sales $とQty Orderedには0の値が必要です。

私はEXIST節を試してみましたが、成功しませんでした。ここで

は私のクエリです:

SELECT Inventory.SKU, Sum([Sales].[Sales $]), Inventory.Qty, Sum([Sales].Qty Ordered) 
FROM Inventory LEFT JOIN Sales ON Inventory.SKU = [Sales].[Style Id] 
WHERE ((([Sales].[Order date]) Between #5/14/2016# And #5/22/2016#)) 
GROUP BY Inventory.SKU, Inventory.Qty; 
+0

をあなたがしなければならないのは、上の節にwhere句の内容を移動しています。 –

+0

MS-Accessタグを追加しました。 SQLクエリでは、常にDBMSにタグを付ける必要があります。特にMS-Accessの場合は、ほとんど標準に準拠していません。 –

答えて

3

基準外結合テーブルの上にON句に属する:

SELECT 
    Inventory.SKU, 
    Sum(Sales.[Sales $]), 
    Inventory.Qty, 
    Sum(Sales.[Qty Ordered]) 
FROM (Inventory 
LEFT JOIN Sales ON Inventory.SKU = Sales.[Style Id] 
       AND Sales.[Order date] Between #5/14/2016# And #5/22/2016#) 
GROUP BY Inventory.SKU, Inventory.Qty; 

理由は、外にで満たさダミーレコードを結合するための手段に参加するということですレコードが一致しない場合はNULL。しかし、列がNULLの場合、WHEREの条件はこれらのレコードには当てはまりません。また、単純なINNER JOINの場所にいることになります。

+0

ありがとうございます - 私はWHEREに変更し、私はMS Accessのエラー "JOIN式がサポートされていません" –

+0

笑、私は知らない。幸いにも私はMS Accessで作業する必要はありません。私は前回私が行ったときに余分に見える括弧を使用しなければならなかったことを覚えています。しかし、それは複数の結合であった。さて、私は編集します:-) –

1

あなたがしなければならないのは、WHERE句でのwhere句の内容を移動です​​:

SELECT Inventory.SKU, Sum([Sales].[Sales $]), Inventory.Qty, Sum([Sales].Qty Ordered) 
FROM Inventory 
LEFT JOIN Sales ON ((Inventory.SKU = [Sales].[Style Id]) 
       AND (([Sales].[Order date] Between #5/14/2016# And #5/22/2016#))) 
GROUP BY Inventory.SKU, Inventory.Qty; 
+0

ありがとう - 私はどこに変更し、私はMS Accessのエラーを取得する "JOIN式がサポートされていません" –

+1

私は過去10年かそこらのMS Accessで動作しませんでしたが、メモリが役立ち、カッコが好きです。私の編集した答えを試してみてください。 –

関連する問題