我有以下 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中的所有GroupID以及每个GroupID中的项目总数。
我设法做到这一点,但仅get Sum(Quantity)适用于不为空的GroupID和DateID。我想得到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 而不是没有行,但鉴于我的数据库中的日期和产品数量,我犹豫是否这样做,查询可能太慢了。
可能有更好的方法来实现这一点。
谢谢