次の4つのテーブルがあります。
----------
tblDates:
DateID
30/04/2012
01/05/2012
02/05/2012
03/05/2012
----------
tblGroups:
GroupID
Home
Table
----------
tblProducts:
ProductID GroupID
Chair Home
Fork Table
Knife Table
Sofa Home
----------
tblInventory:
DateID ProductID Quantity
01/05/2012 Chair 2
01/05/2012 Sofa 1
01/05/2012 Fork 10
01/05/2012 Knife 10
02/05/2012 Sofa 1
02/05/2012 Chair 3
03/05/2012 Sofa 2
03/05/2012 Chair 3
tblDates のすべての Dates 、 tblGroupsのすべてのGroupIDs、および各GroupIDの項目の合計 Quantity を返すクエリを作成しようとしています。
私はこれを行うことができますが、null ではないGroupIDとDateIDget Sum(Quantity)
に対してのみです。代わりに0を取得したいと思います。上記のデータの例として、 の「テーブル」グループに製品のデータがないため、行を取得したいと思います。"02/05/2012 Table 0"
01/05/12
私がこれまでに持っているSQLクエリは次のとおりです。
SELECT tblDates.DateID,
tblProducts.GroupID,
Sum(tblInventory.Quantity) AS SumOfQuantity
FROM (tblGroup
INNER JOIN tblProducts ON tblGroup.GroupID = tblProducts.GroupID)
INNER JOIN (tblDates INNER JOIN tblInventory ON tblDates.DateID = tblInventory.DateID) ON tblProducts.ProductID = tblInventory.ProductID
GROUP BY tblDates.DateID, tblProducts.GroupID;
私は基本的に、tblInventoryとは異なるテーブルに同じクエリを作成する必要があると考えています。これは、リストされた製品の代わりにすべての製品を行ではなく 0 でリストしますが、データベース内の日付と製品の数を考えると、そうするのをためらっています。クエリが遅すぎる可能性があります。
おそらくこれを達成するためのより良い方法があります。
ありがとう