需要在 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的主要内容,如果未能解决你的问题,请参考以下文章

left join 需要distinct吗

如何在 SQL 中使用多个 LEFT JOIN?

SQL Server 在视图查询中将 LEFT JOIN 替换为 LEFT OUTER JOIN

使用来自多个数据集 SQL 的多个 LEFT JOIN

SQL JOINSQL INNER JOIN 关键字SQL LEFT JOIN 关键字SQL RIGHT JOIN 关键字SQL FULL JOIN 关键字

关于SQL 查询效率问题 left join 改成 inner join union