需要在 SQL 中调试 Left Join

Posted

技术标签:

【中文标题】需要在 SQL 中调试 Left Join【英文标题】:Need to debug Left Join in SQL 【发布时间】:2014-07-16 16:30:53 【问题描述】:

帮助,我是 SQL 新手,也是 Stack Overflow 新手!

我收到“语法错误”,这似乎只发生在第二个左连接(没有它,代码运行正常)。这是我的代码,由 Access 2010 编译:

SELECT      Billings.[CustomerNumber], 
            Billings.[Customer Name], 
            Billings.[SOP Number], 
            Billings.[Item Number], 
            Sum (Billings.[Extended Price]) AS ['Revenue'], 
            Sum (Billings.QTY) AS ['Quantity']
FROM        [Product Codes]         AS Codes
LEFT JOIN   Billings                ON Codes.[Product Code] = Billings.[Item Number]
LEFT JOIN   [All Rep Assignments]   ON Billings.CustomerNumber = [All Rep Assignments].[Account Number]
GROUP BY    Billings.[CustomerNumber], 
            Billings.[Customer Name], 
            Billings.[SOP Number], 
            Billings.[Item Number]

【问题讨论】:

什么是语法错误? 如果您使用 Access,为什么不使用查询构建器直观地创建查询,然后您可以看到构建器如何构建子句:) 请发布您的表格架构。 【参考方案1】:

有多个连接时需要括号(每个连接 1 个)

SQL multiple join statement

SELECT      Billings.[CustomerNumber], 
            Billings.[Customer Name], 
            Billings.[SOP Number], 
            Billings.[Item Number], 
            Sum (Billings.[Extended Price]) AS ['Revenue'], 
            Sum (Billings.QTY) AS ['Quantity']
FROM        (([Product Codes]         AS Codes
LEFT JOIN   Billings                
ON Codes.[Product Code] = Billings.[Item Number])
LEFT JOIN   [All Rep Assignments]   
ON Billings.CustomerNumber = [All Rep Assignments].[Account Number])
GROUP BY    Billings.[CustomerNumber], 
            Billings.[Customer Name], 
            Billings.[SOP Number], 
            Billings.[Item Number]

【讨论】:

【参考方案2】:

如果显示的 SQL 来自使用 SQL 视图的 Access 查询构建器,请注意 Access 对空格很敏感。确保您的行以空格结尾。 (我注意到末尾没有分号,这在该视图中是必需的。)

如果您的代码来自其他地方,例如 VBA 模块,则使用 SQL 视图将该 SQL 移至 Access 查询构建器并从那里进行故障排除。 (末尾有分号。)请参阅here 了解更多信息。

【讨论】:

以上是关于需要在 SQL 中调试 Left Join的主要内容,如果未能解决你的问题,请参考以下文章