从单独的数据库中加入查询
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;
【讨论】:
以上是关于从单独的数据库中加入查询的主要内容,如果未能解决你的问题,请参考以下文章