何时打开和关闭MS Access SQL中的连接括号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了何时打开和关闭MS Access SQL中的连接括号相关的知识,希望对你有一定的参考价值。
我想知道何时在MS Access查询中表示联接时打开和关闭括号,因为我正在使用C ++ for MS Access查询开发查询构建器,以便我可以应用相同的代码来生成类似的查询。
SELECT
MasterTool.Name, Toolsets.SlaveToolID, Tools.MachineID
FROM
Tools AS MasterTool
LEFT JOIN
(
Toolsets LEFT JOIN Tools ON Toolsets.SlaveToolID = Tools.ID
)
ON MasterTool.ID = Toolsets.MasterToolID
编辑:
@LeeMac根据您的解释,当我修改我之前提到的查询时
SELECT Tools.Name, Toolsets.SlaveToolID, Tools.MachineID FROM (Tools
LEFT JOIN Toolsets ON Toolsets.SlaveToolID = Tools.ID )
LEFT JOIN Tools ON Toolsets.MasterToolID = Tools.ID
我收到错误加入表达式不支持是否有任何简单的方法来编写上述查询。
答案
实质上,当MS Access查询引用两个以上的表时,一对表之间的每个连续连接都应嵌套在括号中。
例如,具有两个表的查询不需要括号:
select *
from a inner join b on a.id = b.id
添加第三个连接表需要围绕原始连接的括号,以便将其与其他连接区分开:
select *
from
(
a inner join b on a.id = b.id
)
inner join c on a.id = c.id
然后,每次连续添加一个表都会导致现有连接嵌套在另一个括号中:
select *
from
(
(
a inner join b on a.id = b.id
)
inner join c on a.id = c.id
)
inner join d on a.id = d.id
因此,一般来说:
select *
from
(
(
(
(
table1 [inner/left/right] join table2 on [conditions]
)
[inner/left/right] join table3 on [conditions]
)
[inner/left/right] join table4 on [conditions]
)
...
)
[inner/left/right] join tableN on [conditions]
有关LEFT/RIGHT
加入的细微之处,因为嵌套的顺序必须保持连接的方向,例如:
select *
from
(
c left join b on c.id = b.id
)
left join a on a.id = b.id
可以改为:
select *
from
c left join
(
b left join a on b.id = a.id
)
on c.id = b.id
以上是关于何时打开和关闭MS Access SQL中的连接括号的主要内容,如果未能解决你的问题,请参考以下文章
关闭使用附加查询打开的 MS Access laccdb 文件
从 MS SQL SERVER 和 MS ACCESS 调用存储过程的结果之间的差异