2017-10-19 96 views
0

加入我有3個Access數據庫(.ACCDB文件):訪問SQL從其他數據庫

  • db1.accdb具有 '表1'
  • db2.accdb具有 '表2'
  • DB3。 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 
+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; 

. . .是的列,你想從每個表。

2

當前,您的查詢會保留語法錯誤,因爲頂級SELECT不應位於括號內。刪除它們是不夠的,因爲IN子句會干擾FROM子句。

要使用一個SELECT並將每個外部數據庫表視爲本地表,只需在括號內限定外部數據庫路徑,類似於您在服務器級RDBMS(即MySQL,Postgres,SQL Server)中執行的操作在同一臺服務器上跨數據庫查詢。是的,括號應該不包含引號:

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

非常酷。我還沒有看到這個語法,工作很好。 – Andre