Left Join 使用 Group by 访问三个表

Left Join on three tables in access with Group by

Access Jet 引擎的语法错误响应让我崩溃了。 我有三个 tables.

第一个“tblMstItem”为主 table 项目详细信息包含两列“colITemID”PK 和“colItemName”

第二个“tblStocks”是维护购买的 table。此 table 有一列“colRQty”,用于保存购买的特定商品的数量。 “colItemID”FK 来自“tblMstItem”

第三个“tblSales”是维护销售额的table。此 table 有一列“colSoldQty”,用于保存特定商品的售出数量。 “colItemID”FK 来自“tblMstItem”

因此,“colItemID”在所有三个 table 中都很常见,并且已创建 link 个。

我的要求是我需要“tblMstItem”table 列中列出的所有项目都是“colItemID”“colItemName”,如果有任何购买或出售的项目应该显示为该特定项目的总和。

我在下面的 select 语句中使用了 Left Join,但它总是给我一个错误消息。

Select声明如下:

SELECT 
      i.colItemID, 
      i.colItemName, 
      s.rqty, 
      n.soldqty 
from tblMstItem i
left join 
         ( select sum( colRQty ) as rqty from tblStocks group by colItemID ) s 
on i.colItemID = s.colItemID
left join 
         ( select sum( colSoldQty ) as soldqty from tblSales group by colItemID ) n 
on i.colItemID=n.colItemID``

我用许多不同的语法尝试了上面给定的代码,但每次我都遇到语法错误。这让我怀疑 MS Access 是否支持三个 table 连接,我确定我错了。

查看下面的错误消息

Table 列和 table link 如下所示

如果能在这方面得到任何帮助,我将不胜感激。请访问 sql 因为这样我可以在 SQL 服务器中获得结果。

提前致谢

MS Access 的语法很挑剔。例如,联接需要额外的括号。所以,试试这个:

select i.colItemID, i.colItemName, 
       s.rqty, n.soldqty 
from (tblMstItem as i left join 
      (select colItemID, sum(colRQty ) as rqty
       from tblStocks
       group by colItemID
      ) as s 
      on i.colItemID = s.colItemID
     ) left join 
     (select colItemID, sum( colSoldQty ) as soldqty
      from tblSales
      group by colItemID
     ) as n 
     on i.colItemID = n.colItemID;

您还需要在子查询中 select colItemID