【问题标题】:Access Multiple Left Joins - SQL Code访问多个左连接 - SQL 代码
【发布时间】:2016-11-28 21:07:06
【问题描述】:

我正在尝试在 microsoft access 中将三个表连接在一起,允许以 Table 1 作为我的主表的空条目,以便显示所有记录。

我有这段代码只能链接 2 个表。

SELECT [1].IDCode, [2].GiftDate, [2].FundId__1, [2].fund_name 
FROM 1 LEFT JOIN 2 ON [1].IDCode = [2].IDCode 
WHERE ((([1].IDCode) Is Not Null));

但我想添加第三个。我有这个,但是每次我尝试运行它时,我都会收到一个错误(无效操作)。

SELECT [1].IDCode, [2].GiftDate, [2].FundId__1, [2].fund_name, [3].Rep_Type
FROM (1 LEFT JOIN 2 ON [1].IDCode = [2].IDCode) LEFT JOIN 3 ON [1].IDCode = [3].IDCode
WHERE ((([1].IDCode) Is Not Null));

我的代码现在是这个,我仍然收到无效操作。

SELECT [A].IDCode, [A].GiftDate, [A].FundId__1, [A].fund_name, [3].Rep_Type
FROM 
(SELECT [1].IDCode, [2].GiftDate, [2].FundId__1, [2].fund_name
FROM 1
LEFT JOIN 2
ON [1].IDCode = [2].IDCode) A
LEFT JOIN 3
ON [A].IDCode = [3].IDCode
WHERE ((([1].IDCode) Is Not Null));

【问题讨论】:

  • 这个问题的答案:stackoverflow.com/questions/19367565/…可能对你有帮助
  • 3 会一直存在于 2 中吗?如果是则加入 2. 如果不是 () 顺序将很重要并使这更具挑战性。
  • 3 并不总是存在于 2 中。
  • 我无法重新创建问题。您的第二个查询在 Access 2013 中运行良好。也许发布您的表架构,因为我的示例可能与您的不符。

标签: sql ms-access left-join


【解决方案1】:

如果 1-->2-->3 则加入时的第三个应该是 2.idcode = 3.idcode

SELECT [1].IDCode, [2].GiftDate, [2].FundId__1, [2].fund_name, [3].Rep_Type
FROM (1 LEFT JOIN 2 ON [1].IDCode = [2].IDCode) LEFT JOIN 3 ON [2].IDCode = [3].IDCode
WHERE ((([1].IDCode) Is Not Null));

但是,如果连接真的回到 1...

由于 Access 对 () 很挑剔并重新加入 2。

所以我不会因为 () 而迷失方向,我刚刚创建了一个内联视图来管理连接。

SELECT [A].IDCode, [A].GiftDate, [A].FundId__1, [A].fund_name, [3].Rep_Type
FROM
(SELECT [1].IDCode, [2].GiftDate, [2].FundId__1, [2].fund_name
 FROM 1 
 LEFT JOIN 2 
   ON [1].IDCode = [2].IDCode) A
LEFT JOIN 3 
  ON [A].IDCode = [3].IDCode
WHERE [A].IDCode Is Not Null;

【讨论】:

  • 1-> 2 和 1-> 3 我尝试将底部代码替换为 A 而不是 1/2,但仍然出现无效操作。
  • FundID_1 应该有两个或 1 个下划线吗?你似乎有 2 这很奇怪。替代方法是将 A 创建为视图并从视图中选择可能出于某种原因不喜欢内联视图的访问。
猜你喜欢
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多