我可以在Access 2010 SQL中混合使用左连接和内部连接吗?

我可以在Access 2010 SQL中混合使用左连接和内部连接吗?,sql,ms-access,join,ms-access-2010,Sql,Ms Access,Join,Ms Access 2010,TL;DR:我想知道在Access中是否可以混合使用左连接和内部连接,因为左连接()会显著降低我的查询速度 完整版本:昨天,我发现这是因为Access 2010不喜欢我在组合查询中混合左连接和内部连接造成的。这里有一个小结: 我有三个问题,我想把它们结合起来。每个组成查询都是使用几个表和内部联接构造的 然后,我需要合并这三个查询。第一季度的结果比第二季度和第三季度的结果多,如果第二季度和/或第三季度没有匹配的结果,我仍然希望返回第一季度的结果。类似地,Q2返回的结果Q3没有,我希望返回空结果,而

TL;DR:我想知道在Access中是否可以混合使用左连接和内部连接,因为左连接()会显著降低我的查询速度

完整版本:昨天,我发现这是因为Access 2010不喜欢我在组合查询中混合左连接和内部连接造成的。这里有一个小结:

我有三个问题,我想把它们结合起来。每个组成查询都是使用几个表和内部联接构造的

然后,我需要合并这三个查询。第一季度的结果比第二季度和第三季度的结果多,如果第二季度和/或第三季度没有匹配的结果,我仍然希望返回第一季度的结果。类似地,Q2返回的结果Q3没有,我希望返回空结果,而不是无结果,反之亦然

所有这些都需要第四个查询使用左连接连接Q1、Q2和Q3;但这导致了“无法绑定多部分标识符”错误。这是通过用左连接替换组成查询中的所有内部连接来解决的。基本上,我假设Q4只查看其他查询的结果,而实际上它一次就完成了所有查询,因此出现了错误

所以,我已经解决了实际的错误,但我现在运行四个查询,都使用左连接。尽管这在每个组成查询中返回相同的结果,但由于外部联接的工作方式,速度要慢得多

有什么方法可以让我的组合查询像我最初期望的那样工作(即,使用内部联接生成Q1、Q2和Q3以提高速度,然后让Q4在继续联接它们时将它们视为平面数据)


我可以使用一些VBA将每个查询放到一个临时表中,并在第4季度查看这些查询,但我希望用SQL来完成这一切。可以这样做吗?

标题问题的答案是:可以,可以混合使用外部联接和内部联接:

SELECT
  A.X,
  B.Y,
  C.Z
FROM
  A RIGHT JOIN (
    B INNER JOIN (
      C LEFT JOIN (
        D
      ) ON C.DID = D.ID
    ) ON B.CID = C.ID
  ) ON A.BID = B.ID
主体问题的答案是:不,您不能将内部联接表和外部联接作为左联接进行计算。一旦执行了连接,它的结果将被锁定,并类似于一组全新的数据


如果您想要从Q1到Q4的空匹配,那么您必须从Q1到Q4进行外部联接。就这么简单。

请提供模式、示例数据和所需输出。您好@RedFilter-请原谅我的无知,但模式不只是与SQL Server相关吗?我正在使用MS Access 2010。我可能误解了这个词。我认为schema@RedFilter的意思可能不是表结构,但您可以使用子查询等<代码>选择。。。从(选择内部q1、q2等)左Q3@DStanley谢谢。但实际的表结构和查询是否相关?我很高兴把它们包括进来,但我怀疑它们会把本质上是一个理论问题的问题弄得模糊不清;除非实际的表结构和/或查询布局会影响我是否可以混合使用内部联接和左联接,但我认为情况并非如此?