• ベストアンサー

複数のデータベースを検索したい

困っている内容ですが、 別々のサーバに構築されたAとBというデータベースがあります。 そのAとBにADOによる接続を行いますが、 AとBのテーブルを結合して情報を取得したいと考えています。 SQL文で言うと、 顧客情報はデータベースAに 顧客詳細はデータベースBに存在するテーブルであり 会員IDはそれぞれのテーブルにある SELECT * FROM 顧客詳細 INNER JOIN 顧客情報 ON 顧客情報.会員ID = 顧客詳細.会員ID のようなことがしたいのです。 テーブルを読み込む場合 '' ADO接続オブジェクト Dim adoCon As ADODB.Connection '' 新しいADOレコードセットオブジェクトを作成する Set rs = New ADODB.Recordset '' 読み取り専用でテーブルを開く rs.Open SQL, adoCon, adOpenForwardOnly, adLockReadOnly と書いていまして、adoConの部分が1つのADO接続オブジェクトしか設定できません。 どうにかして2つのデータベースをまたがって 結合できないものでしょうか? 環境は Win2000 + VB6 + SQLSERVER2000 です。 DB初心者なので、説明がうまくいかないと思いますが、 もしおわかりの方がいましたらよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • angband
  • ベストアンサー率51% (86/168)
回答No.1

残念ながらこれはSQLだけでは困難かと思います。 ADOでもDAOでも内部では最終的にDBMSを使うためには SQL文を発行しますが、SQLには異なったデータベース内の テーブルを同時に連結できる書式は存在しません。 しかし、MS Jetエンジンであればリンクテーブルという 機能で顧客情報だけ外部から連結できるので、MS SQLでもこの機能が使えないのか調べてください。 あとMS SQLで使えるかわかりませんが、CREAT E TEMPORARY TABLE文で一時的に連結用の顧客情報を用意することもできるかもしれません。

soma3
質問者

お礼

早速の返事ありがとうございます。 教えていただいた、リンクテーブルとCREAT~を 少し調べてみようと思います。

soma3
質問者

補足

TEMPORARYはSQL SERVERでは使用できないようで、 SQLポケットリファレンスによるとテーブル名の先頭に#を付けたりしてテンポラリテーブルであると指示するようです。

その他の回答 (1)

回答No.2

SQL Serverのオンラインヘルプの「分散クエリ」~「リンクサーバー名を使用したデータソースの識別」とか「アドホック名を使用したデータソースの識別」及び「OPENROWSET」は参考になりませんか?

soma3
質問者

お礼

助言ありがとうございます。 オンラインヘルプも参考にして調べてみようと思います。 何を調べるべきなのかもわからなかったので、 大変助かります。

関連するQ&A