我有3个访问数据库(.accdb文件):
我应该在db3中编写一个查询,它与表1和表2进行连接并显示结果。
我已经尝试过类似的东西,但它不起作用......
( SELECT * FROM [table 1] IN 'C:\files\db1.accdb' ) t1
INNER JOIN
( SELECT * FROM [table 2] IN 'C:\files\db2.accdb' ) t2
ON
t1.field1 = t2.field1 and t1.field2 = t2.field2
答案 0 :(得分:2)
目前,您的查询会保留语法错误,因为顶级SELECT
不应位于括号中。删除它们是不够的,因为IN
子句会干扰FROM
子句。
要使用一个SELECT
并将每个外部数据库表视为本地表,只需在句点中限定外部数据库路径,类似于您在服务器级RDBMS中所做的操作(即MySQL,Postgres,SQL)服务器)在同一服务器上查询数据库时。是的,括号不应包含引号:
SELECT t1.*, t2.*
FROM [C:\files\db1.accdb].[table 1] t1
INNER JOIN [C:\files\db2.accdb].[table 2] t2
ON t1.field1 = t2.field1 AND t1.field2 = t2.field2
或者使用反引号:
SELECT t1.*, t2.*
FROM `C:\files\db1.accdb`.`table 1` t1
INNER JOIN `C:\files\db2.accdb`.`table 2` t2
ON t1.field1 = t2.field1 AND t1.field2 = t2.field2
答案 1 :(得分:1)
我希望查询看起来像这样:
select . . .
from ( SELECT * FROM [table 1] IN 'C:\files\db1.accdb' ) as t1 INNER JOIN
( SELECT * FROM [table 2] IN 'C:\files\db2.accdb' ) t2
ON t1.field1 = t2.field1 and t1.field2 = t2.field2;
. . .
适用于您希望从每个表中获取的列。