【发布时间】:2017-12-04 19:22:20
【问题描述】:
我在将在 SQL Server Management Studio 中工作的查询传输到 MS Access 时遇到问题。我收到一个错误:
JOIN 操作中的语法错误
当我收到此错误时,“FROM ProductRun”行会突出显示。
我认为 Access 在处理我已经完成的多个 Join 语句时需要括号。我被困住了。请帮忙。
SELECT
LoadTable.DateTimeStamp, ProgramTable.Value 1, PL.Value 2, PL.Value 3
FROM
((LoadTable
LEFT JOIN
ProgramTable ON LoadTable.DateTimeStamp = ProgramTable.DateTimeStamp)
LEFT JOIN
PL ON LoadTable.DateTimeStamp = PL.DateTimeStamp)
LEFT JOIN
(SELECT [StartTime], [EndTime]
FROM ProductRun
WHERE ProductRun.StartTime >= '11/1/2017'
AND ProductRun.Startime <= '12/1/2017') ON (LoadTable.DateTimeStamp >= DATEADD(MINUTE, 15, ProductRun.StartTime)
AND LoadTable.DateTimeStamp <= DATEADD(MINUTE, -15, ProductRun.EndTime))
ORDER BY
LoadTable.DateTimeStamp;
这是我在 Management Studio 中的嵌套选择语句,效果很好:
LEFT JOIN (SELECT [StartTime]
,[EndTime]
FROM [ProductionReporting].[dbo].ProductRun
WHERE StartTime between '11/1/2017 12:00:00 AM' and '11/25/2017 12:00:00 AM') as M3
ON M1.DateTimeStamp between DATEADD(MINUTE,15, M3.StartTime) and DATEADD(MINUTE,-15, M3.EndTime)
【问题讨论】:
-
我认为 MS Access 不允许在
ON子句中出现不等式。 -
我编辑了我的原始帖子以在 Management Studio 中包含嵌套查询,它工作正常。如果在 ON 子句中不允许进行逻辑测试,我将如何在 Access 中进行这项工作?
-
@GordonLinoff Access 确实允许它们(我在多个查询中使用过它们)。我认为 Kashif 正确地发现了错误,
DateAdd的第一个参数应该是一个字符串,MINUTE不是一个有效的参数(Access 可能认为这是一个不应该有的地方的参数)。此外,ON子句中的多重比较 = Access 中需要括号
标签: sql ms-access select join nested