从单独的数据库加入查询

Joining a query from a separate database

我有两个 Access 2007 数据库,DB1 和 DB2 用于约定,我正在尝试将 DB1 中的查询 (Q1) 的结果与 DB2 中的查询 (Q2) 进行外部联接。

我的代码是这样的

SELECT 
  Q2.a, 
  Q2.b, 
  Q2.c, 
  Q1.d

FROM
  [Full name of Q1] IN 'C:\Users\...\DB1.accdb' AS Q1
    RIGHT JOIN
      [Full name of Q2] AS Q2
    ON Q2.a = Q1.a 
;

但是returns错误"Syntax error in FROM clause."

我已经用 LEFT JOIN 尝试过这种方法,并且尝试过在事物周围放置太多括号,但徒劳无功地尝试使它起作用。我做错了什么?

我相信您可以像这样重写您的查询:

SELECT 
  Q2.a, 
  Q2.b, 
  Q2.c, 
  Q1.d
FROM (SELECT * FROM [Full name of Q1] 
IN 'C:\Users\...\DB1.accdb') Q1
RIGHT JOIN [Full name of Q2] AS Q2 ON Q1.ID = Q2.ID;

[source Name] IN 'file path' 语法很棘手。如果要为 [source Name] 添加别名,则需要在 [source Name]'file path' 部分之间(而不是在 'file path' 之后)包含别名。

但即使这样也只适用于包含单个数据源的查询。一旦加入任何内容,[source Name] IN 'file path' 语法就会中断......并且无法修复。您需要一种不同的方法...

SELECT 
    Q2.a, 
    Q2.b, 
    Q2.c, 
    Q1.d
FROM
    [C:\Users\...\DB1.accdb].[Full name of Q1] AS Q1
    RIGHT JOIN [Full name of Q2] AS Q2
    ON Q2.a = Q1.a;