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
时发生的错误是:
不支持加入表达式
答案 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
但是,您已经定义了Trs
和Whi
,所以我不知道您想要哪个表,或者为什么。也许您只想将INNER JOIN
更改为LEFT JOIN
或RIGHT JOIN
。