2009-07-31 21 views
1

誰かが一度に2つのデータベースをどのように接続できるか教えてください。私たちがやっている変換のために2組のデータを取得する必要があります。一度に複数のアクセスデータベースに接続する方法

db1およびdb2がその名前です。私は私がやると思った:

select * 
from db1.table1 as table1 
    inner join db2.table2 as table2 on table2.column = table1.table1.column 

助けが素晴らしいだろう。それはこれらのように聞こえる、質問のタイトルに基づいて

おかげ

+0

ありがとうございます。私はそれを恐れていた。私はスクリプト言語を使ってこの変換を行わなければならないと思う。 –

+0

先に進み、投票して好きな答えを受け入れてください:) – shahkalpesh

+2

Whoa、nelly。リンクされたテーブルを設定することは、このために行く方法です。非常に簡単に、あなたはその後、参加することができます。 – MusiGenesis

答えて

3

は、Microsoft Accessデータベースですが、これらは、Accessまたは別のDBであれば、質問自体は言及していません。これらがAccessであり、それらを変更する権利がある場合、これはオプションです。そうでなければ、これはまったく役に立たないでしょう。

Microsoft Accessを使用している場合は、そのうちの1つにlinked tableを作成してください。

SELECT a.d, b.* 
    FROM mylocalTable AS a, 
     myLocalTable AS b IN "C:\mydir\mysubdir\myext.mdb" 
WHERE a.id = b.id; 

代替同等の構文:上記の例で

SELECT a.d, b.* 
    FROM mylocalTable AS a 
     INNER JOIN 
      [DATABASE=C:\mydir\mysubdir\myext.mdb;].myLocalTable AS b 
      ON a.id = b.id; 

へのパス次に使用すると、1つのデータベースでそれらの両方を問い合わせることができます...

+0

彼はちょうどこれらのDBからデータを取得しようとしていて、変更していないようです。 – PowerUser

3

のアクセスは、クエリのこの種をサポートしています外部MDBは8.3のファイル命名スタイルに従います。
dir/xを実行して、ディレクトリとファイルの名前を調べて、どのように見えるかを確認します。

c:¥program files¥mydatabase.mdbは、c:¥progra〜1¥mydata〜1.mdbのように見えます。

EDIT:これに対処するにはリンクテーブルが適しています。

+0

Accessは、SQL文のIN句で長いファイル名をサポートします。 \\ servername \ Share Name \これは長いファイル名です.MDBは正常です。 –

+0

リンクされたテーブルは必ずしも常に良いとは限りません。それはあなたの状況に適したもののトレードオフです。 –

+0

@トニー:ファイル/ディレクトリ名に長いパスとスペースを含むファイル名を与えようとしましたが、SQLはエラー「ERROR in FROM clause」を返しました。なぜ私はそれをしたのか分からない。 – shahkalpesh

関連する問題