需要在 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的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 在视图查询中将 LEFT JOIN 替换为 LEFT OUTER JOIN
SQL JOINSQL INNER JOIN 关键字SQL LEFT JOIN 关键字SQL RIGHT JOIN 关键字SQL FULL JOIN 关键字