连接表达式不支持SQL

时间:2014-11-28 11:47:41

标签: sql sql-server vba ms-access access-vba

SELECT 
    Trs.itemID, Trs.imtName, Trs.sumQty,  Sum(whiQty) 
FROM 
    ((SELECT 
          trsitemID AS itemID, trsimtName AS imtName, 
          Sum(trsQty) As sumQty 
      FROM 
          tblTransactionSub AS T 
      WHERE 
          trstraID = 1231 
          AND trsActive = True  
      GROUP BY 
          trsitemID, trsimtName) AS Trs 
INNER JOIN 
   tblWarehouseItem AS WHI ON Trs.itemID = WHI.whiitemID)
RIGHT JOIN 
   WHI ON Trs.trswhiID = WHI.whiID 
WHERE 
    whiActive = True 
    AND whiCansel = False  
    AND whiwrhID = 19 
GROUP BY 
    Trs.itemID,Trs.imtName, Trs.sumQty 
HAVING 
    SUM(whiQty) < Trs.sumQty

如果你能帮助我,因为我不熟悉SQL命令,我不能轻易找到我的错误。

提前致谢

添加Right Join时发生的错误是:

  

不支持加入表达式

2 个答案:

答案 0 :(得分:1)

在MS Access中,您必须使用具有多个连接的括号:

select ...
from 
    ((table1
    ... join table2 on ...)
    ... join table3 on ...)
    ... join tableN

/编辑/

由于OP问题经常改变它的语法,那么我的答案似乎不合适:)最初那里没有parens。

关于RIGHT JOIN:您需要在JOIN关键字后使用表名(或整个子选择),而不是跳过它或使用其他别名。您的查询部分

RIGHT JOIN 
    WHI ON Trs.trswhiID = WHI.whiID 

目前使用别名WHI,这在两个方面是错误的:1)它不是表名2)它已经被使用了。你需要这样的东西:

RIGHT JOIN 
    tblWarehouseItem AS WHI2 ON Trs.trswhiID = WHI2.whiID 

MS Access可能会限制您的JOIN使用类型(如LEFT加入后不应出现INNER加入);我目前无法检查准确的规则。

答案 1 :(得分:0)

您的问题是RIGHT JOIN之后没有表名:

RIGHT JOIN 
   ON Trs.trswhiID = WHI.whiID 

应该是:

RIGHT JOIN YOURTABLENAMEHERE as alias
   ON Trs.trswhiID = WHI.whiID 

但是,您已经定义了TrsWhi,所以我不知道您想要哪个表,或者为什么。也许您只想将INNER JOIN更改为LEFT JOINRIGHT JOIN