访问多表上的SQL连接

访问多表上的SQL连接,sql,ms-access,join,Sql,Ms Access,Join,我在Access SQL中遇到一个连接错误,在使用多个“开”条件时。我无法在两个不同的表上执行ON子句,例如: select * from (((A left join B on a.id = b.id) left join c on c.id = b.id) left join D on (d.id = b.id) and (d.id = a.id) 最后的join语句会导致错误,因为我先链接表B上的表D,然后链接表A上的表D。如果我选择再次链接表B上的表D,则它会解析。然而,我需要以这

我在Access SQL中遇到一个连接错误,在使用多个“开”条件时。我无法在两个不同的表上执行ON子句,例如:

select * 
from
(((A 
left join B on a.id = b.id)
left join c on c.id = b.id)
left join D
on (d.id = b.id) and (d.id = a.id)
最后的join语句会导致错误,因为我先链接表B上的表D,然后链接表A上的表D。如果我选择再次链接表B上的表D,则它会解析。然而,我需要以这种方式连接它,因为我需要从两个表链接表D


如何更有效地构造查询以获得结果?

您可以尝试从A.id=B.id上的左连接B左连接c.id=B.id上的左连接D.id=B.id和D.id=A.id上的左连接D

确切地说您想要做什么有些困难,但很可能,这就是您想要的:

select * 
from
(((A
left join B on a.id = b.id)
left join C on c.id = b.id)
left join D on d.id = a.id)

由于您正在尝试左联接,因此没有理由将多个ID相互链接。

我认为问题在于括号,而不是联接或
子句上的
。删除所有括号并重新运行。也。。。你有错误吗?如果是这样的话,那么分享它将非常有帮助。选择一个更符合
JOIN
语法的数据库。这有点开玩笑,但微软的访问权限相当有限。您还应该更新问题。所有联接都在相同的字段上,因此不需要多重条件。这使得很难提出真正的建议。@JNevill是对的。你有5个左括号和4个右括号。。。我可能有一半是对的。正如Gordon所建议的,当涉及到加入表时,Access是一个小丑。我认为所有这些左撇子的加入都应该被允许,因为我只在访问中遇到过内部和左撇子混合的问题。但我已经很长时间没有使用access了,只是为了将数据导出到适当的数据库中。请正确设置您的答案的格式,并在可能的情况下对您的查询进行其他解释。