无法执行SQL语句,因为它包含不明确的外连接。哪里?

时间:2013-06-03 18:36:47

标签: sql ms-access

运行时收到错误消息。你知道为什么吗?我使用Access设计视图构建了它。

SELECT  [Sales structure].Cluster ,
        [Sales structure].Country ,
        [Transaction details].[Sales company code] ,
        [Sales structure].[Sales company name] ,
        YEAR([Transaction details].[YYYY-MM-DD]) AS [Year] ,
        MONTH([Transaction details].[YYYY-MM-DD]) AS [Month] ,
        SUM([Transaction details].[Sales volume LOC]) AS Total ,
        [Transaction details].[Currency code] ,
        Currencies.[CUR/EUR] AS [Currency rate]
FROM    Items ,
        Currencies
        RIGHT JOIN ( [Sales structure]
                     RIGHT JOIN [Transaction details] ON [Sales structure].[Sales company code] = [Transaction details].[Sales company code]
                   ) ON Currencies.[Currency code] = [Transaction details].[Currency code]
GROUP BY [Sales structure].Cluster ,
        [Sales structure].Country ,
        [Transaction details].[Sales company code] ,
        [Sales structure].[Sales company name] ,
        YEAR([Transaction details].[YYYY-MM-DD]) ,
        MONTH([Transaction details].[YYYY-MM-DD]) ,
        [Transaction details].[Currency code] ,
        Currencies.[CUR/EUR]
HAVING  ( ([Transaction details].[Currency code] = [Currencies].[Currency code]) )
ORDER BY YEAR([Transaction details].[YYYY-MM-DD]) ,
        MONTH([Transaction details].[YYYY-MM-DD]) ;

1 个答案:

答案 0 :(得分:3)

JOINItems表之间没有Currencies条件。它们只是用逗号引入。

MS Access非常关注联接。您可能还希望在每个连接周围放置括号,因为它可能有关于缺少括号的错误,即使查询在语法上没有它们也是正确的。

我强烈建议您忘记可以使用逗号,并通过在WHERE子句中添加连接条件来连接表。这是旧式的,应该放弃!请开始使用引入(在第一个表之后)带有JOIN子句并加入ON子句的ANSI SQL连接。这有很多令人信服的理由 - 如果您想了解更多信息,只需在线进行一些搜索。