Access SQL视图中出现语法错误
我总是在Access SQL方面遇到问题。该语法要求随机添加括号或移动与SQL Server不同的内容。有人知道这里可能有什么语法错误吗?错误集中在FROM子句周围。我知道其他条款还可以,但我把它们留了下来作为参考 更新:代码简化了很多。我主要关心的是FROM的3个从句Access SQL视图中出现语法错误,sql,ms-access,syntax,Sql,Ms Access,Syntax,我总是在Access SQL方面遇到问题。该语法要求随机添加括号或移动与SQL Server不同的内容。有人知道这里可能有什么语法错误吗?错误集中在FROM子句周围。我知道其他条款还可以,但我把它们留了下来作为参考 更新:代码简化了很多。我主要关心的是FROM的3个从句 SELECT ... FROM (((maintable INNER JOIN othertable ON (maintable.A = othertable.A) AND (maintable.B
SELECT
...
FROM
(((maintable
INNER JOIN othertable ON (maintable.A = othertable.A) AND (maintable.B = othertable.B))
INNER JOIN
(SELECT
...
FROM
(thirdtable)
INNER JOIN fourthtable ON thirdtable.blah = fourthtable.blah
WHERE
fourthtable.something <> 1
GROUP BY
...
) AS innerselect1 ON (othertable.item = innerselect1.item) AND (othertable.whse = innerselect1.whse)) AS table1)
JOIN (
SELECT ...
FROM (othertable INNER JOIN maintable ON othertable.item = maintable.item)
GROUP BY ...
HAVING ...
) AS table2 ON table1.item = table2.item
WHERE
...
GROUP BY
...
HAVING
...
UNION ALL
SELECT
...
FROM
(((maintable
INNER JOIN othertable ON (maintable.A = othertable.A) AND (maintable.B = othertable.B))
INNER JOIN
(SELECT
...
FROM
(thirdtable)
INNER JOIN fourthtable ON thirdtable.blah = fourthtable.blah
WHERE
fourthtable.something <> 1
GROUP BY
...
) AS innerselect1 ON (othertable.item = innerselect1.item) AND (othertable.whse = innerselect1.whse)) AS table1)
LEFT JOIN (
SELECT ...
FROM (othertable INNER JOIN maintable ON othertable.item = maintable.item)
GROUP BY ...
HAVING ...
) AS table2 ON table1.item = table2.item
WHERE
table2.item IS NULL
GROUP BY
...
HAVING
...
UNION ALL
SELECT
...
FROM
(((maintable
INNER JOIN othertable ON (maintable.A = othertable.A) AND (maintable.B = othertable.B))
INNER JOIN
(SELECT
...
FROM
(thirdtable)
INNER JOIN fourthtable ON thirdtable.blah = fourthtable.blah
WHERE
fourthtable.something <> 1
GROUP BY
...
) AS innerselect1 ON (othertable.item = innerselect1.item) AND (othertable.whse = innerselect1.whse)) AS table1)
RIGHT JOIN (
SELECT ...
FROM (othertable INNER JOIN maintable ON othertable.item = maintable.item)
GROUP BY ...
HAVING ...
) AS table2 ON table1.item = table2.item
WHERE
table1.item IS NULL
GROUP BY
...
HAVING
...
;
Access SQL中不支持完全外部联接
有关解决方法,请参见例如
或者:pAccess SQL中不支持完全外部联接
有关解决方法,请参见例如
或:p
[Access SQL]语法要求随机添加括号
这不是随机的。我假设你误用了random这个词,就像人们从字面上误用这个词一样
当涉及多个连接条件时,Access SQL通常需要括号。也就是说,它倾向于抱怨这样的结构:
SELECT ...
FROM
tbl1
INNER JOIN tbl2 ON tbl1.fld = tbl2.fld1
INNER JOIN tbl3 ON tbl2.fld = tbl3.fld2
相反,它需要在一个完整的内部联接周围加上括号。当我手工编写Access SQL时,我更喜欢这样使用缩进
SELECT ...
FROM
(
tbl1
INNER JOIN
tbl2
ON tbl1.fld = tbl2.fld1
)
INNER JOIN
tbl3
ON tbl2.fld = tbl3.fld2
第二个例子:
而不是
SELECT ...
FROM
tbl1
INNER JOIN tbl2 ON tbl1.fld = tbl2.fld1
INNER JOIN tbl3 ON tbl2.fld = tbl3.fld2
INNER JOIN tbl4 ON tbl3.fld = tbl4.fld3
更像是
SELECT ...
FROM
(
(
tbl1
INNER JOIN
tbl2
ON tbl1.fld = tbl2.fld1
)
INNER JOIN
tbl3
ON tbl2.fld = tbl3.fld2
)
INNER JOIN
tbl4
ON tbl3.fld = tbl4.fld3
[Access SQL]语法要求随机添加括号
这不是随机的。我假设你误用了random这个词,就像人们从字面上误用这个词一样
当涉及多个连接条件时,Access SQL通常需要括号。也就是说,它倾向于抱怨这样的结构:
SELECT ...
FROM
tbl1
INNER JOIN tbl2 ON tbl1.fld = tbl2.fld1
INNER JOIN tbl3 ON tbl2.fld = tbl3.fld2
相反,它需要在一个完整的内部联接周围加上括号。当我手工编写Access SQL时,我更喜欢这样使用缩进
SELECT ...
FROM
(
tbl1
INNER JOIN
tbl2
ON tbl1.fld = tbl2.fld1
)
INNER JOIN
tbl3
ON tbl2.fld = tbl3.fld2
第二个例子:
而不是
SELECT ...
FROM
tbl1
INNER JOIN tbl2 ON tbl1.fld = tbl2.fld1
INNER JOIN tbl3 ON tbl2.fld = tbl3.fld2
INNER JOIN tbl4 ON tbl3.fld = tbl4.fld3
更像是
SELECT ...
FROM
(
(
tbl1
INNER JOIN
tbl2
ON tbl1.fld = tbl2.fld1
)
INNER JOIN
tbl3
ON tbl2.fld = tbl3.fld2
)
INNER JOIN
tbl4
ON tbl3.fld = tbl4.fld3
Access一次只能联接两个表。你需要很多括号。有趣的是,我不知道。Access一次只能连接两个表。你需要很多括号。很有趣,我不知道。是否有一种访问等价物,将一个字段上的两个表连接起来,并返回字段不匹配的行?是否有一种访问等价物,将一个字段上的两个表连接起来,并返回字段不匹配的行?如果我有两个内部连接和一个左连接怎么办?然后在字段周围放一对括号JOIN您希望首先执行,并且该结果将被联接到第三个表。我有点困惑。你是说从tbl1内部连接tbl2到。。。上的内部联接tbl3。。。左连接tbl4打开。。。或者你的意思是从tbl1内部连接到tbl2上。。。上的内部联接tbl3。。。左连接tbl4在?我用更简单的代码更新了我的问题,以便更好地显示我当前使用的括号。对不起,我误读了你的原始评论。我很快会更新我的答案。如果我有两个内部连接和一个左连接呢?然后你只需在你想首先执行的连接周围放一对括号,结果将被连接到第三个表。我有点困惑。你是说从tbl1内部连接tbl2到。。。上的内部联接tbl3。。。左连接tbl4打开。。。或者你的意思是从tbl1内部连接到tbl2上。。。上的内部联接tbl3。。。左连接tbl4在?我用更简单的代码更新了我的问题,以便更好地显示我当前使用的括号。对不起,我误读了你的原始评论。我很快会更新我的答案。