同一查询中的多个左联接导致“无效操作”错误

时间:2018-06-21 23:13:17

标签: sql ms-access ms-access-2013

我有以下查询...

查询#1

{
  "uri":"https://platform.ringcentral.com/restapi/v1.0/dictionary/permission?page=1&perPage=100",
  "records":[
    {
      "uri":"https://platform.ringcentral.com/restapi/v1.0/dictionary/permission/Meetings",
      "id":"Meetings",
      "displayName":"Meetings App Access",
      "assignable":true,
      "readOnly":false,
      "siteCompatible":"Independent",
      "category":{
        "uri":"https://platform.ringcentral.com/restapi/v1.0/dictionary/permission-category/Meetings",
        "id":"Meetings"
      },
      "includedPermissions":[

      ]
    }
  ]
}

查询#2

SELECT aa.DocNum, b.QualityClass
FROM dbo_TransferHistory AS aa LEFT JOIN PCQualityClass AS bb ON aa.DocNum = bb.DocumentNum
WHERE (((aa.DocNum)=[Enter Doc Num]));

dbo_TransferHistory是我通过ODBC连接器访问的表。 PCQualityClass和PCBldgCond是基于另一个ODBC表的两个查询。这两个查询都只有主查询中引用的两个字段。

DocNum和DocumentNum是相同的类型(“短文本”,长度为12),尽管我想使名称相同,但不能。 运行查询时,将弹出一个输入框,并将[输入文档编号]替换为我想要数据的文档编号。

查询是在Access中使用“创建查询”工具创建的。

问题在于,虽然查询1可以运行,但查询2会导致错误“无效操作”。

更改为内部联接将允许查询#2起作用,但会导致问题,因为有时两个子查询中的一个或两个都没有数据,但是我仍然需要主表中的数据。

请帮助,为什么不起作用,我不知所措。这是Access 2013中的错误,不允许在同一查询中出现两个Left Joins还是我缺少的其他内容?

2 个答案:

答案 0 :(得分:0)

SQL看起来应该可以工作,所以问题可能出在基本查询和两个左联接的组合上。

我对ODBC表和多个外部联接的Access查询的一般经验是:即使使它们起作用,它们通常也会表现很差。

所以我的建议是:在SQL Server上将整个内容重新创建为视图,并链接该视图。然后,您的Access查询变得很简单

SELECT * FROM dbo_ViewTransferHistory
WHERE DocNum=[Enter Doc Num]

答案 1 :(得分:0)

好,所以这让绝对的@@ $$%感到沮丧。语法是正确的,我在网上看到的所有内容都说它应该工作。出于纯粹的沮丧和好奇,我将ODBC表作为本地表导入到Access中,并更改了查询中的表引用以使用本地表。 OMG,现在可以使用了。相同的数据,相同的结构,不同的表类型,并且可以正常工作。因此,看起来问题出在尝试使用ODBC进行多个联接。不幸的是,每次查询运行时,我无法从ODBC创建本地表。继续研究这个问题,看看是否可以找到其他解决方法。还有其他想法吗?

基本上,使用ODBC数据源时,Access将不允许多个外部联接。我将其标记为已回答,并在新帖子中重新表述该问题。 谢谢。