从单独的数据库中加入查询

Posted

技术标签:

【中文标题】从单独的数据库中加入查询【英文标题】:Joining a query from a separate database 【发布时间】:2015-10-31 08:10:04 【问题描述】:

我有两个 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 
;

但返回错误“FROM 子句中的语法错误”。

我已经用LEFT JOIN 尝试过这种方法,并且在没有结果的尝试中尝试了太多的括号来让它起作用。我做错了什么?

【问题讨论】:

为什么你的查询中有那个目录? 我有 'C:\Users\...\DB1.accdb' 引用第二个数据库,该查询不是其中的一部分。如果你的意思是问我为什么有" 'C:\Users\...\DB1.accdb' ",那是因为我为了提问和节省空间而缩短了完整的文件路径。 我没有意识到您可以像在 MS Access 中那样在选择查询中直接引用数据库路径。老实说,我对 MS Access 的熟悉程度不如我对其他数据库的熟悉程度。 @FutbolFan,我会尝试修复,虽然我最初引用的链接没有明确说明我可以成功运行以下查询:SELECT [Full Name of Query].a, [Full Name of Query].b, [Full Name of Query].c, FROM [Full Name of Query] IN 'C:\Users\...\DB.accdb' 关于已删除答案的旁注,通过子查询获取查询确实有效,但我之前没有意识到这是一个选项。好答案@FutbolFan 【参考方案1】:

[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;

【讨论】:

啊,我明白了。感谢您的帮助!【参考方案2】:

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

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;

【讨论】:

以上是关于从单独的数据库中加入查询的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中加入“博客”表和“评论”表

如何以正确的方式在 Firebase 查询中加入结果

在 WordPress 数据库查询中加入/求和自定义字段

在 jquery 数据表中加入查询问题

如何在 Cloud Firestore 查询中加入多个文档?

有没有办法在 SQL 中加入两个查询,每个查询都有一个 order by?