2017-10-19 5 views
0

からの参加:アクセスSQLは、私は3つのアクセスデータベース(の.accdbファイル)を持つ他のデータベース

  • をdb1.accdbは '表1'
  • db2.accdbは、 '表2'
  • DB3を持っていました。 accdb is empty

テーブル1と2を結合して結果を表示するクエリをdb3で作成する必要があります。

私は、クエリは次のように見えるように期待...

(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

関連する問題