アプリ版:「スタンプのみでお礼する」機能のリリースについて

困っている内容ですが、
別々のサーバに構築された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初心者なので、説明がうまくいかないと思いますが、
もしおわかりの方がいましたらよろしくお願いします。

A 回答 (2件)

残念ながらこれはSQLだけでは困難かと思います。



ADOでもDAOでも内部では最終的にDBMSを使うためには
SQL文を発行しますが、SQLには異なったデータベース内の
テーブルを同時に連結できる書式は存在しません。

しかし、MS Jetエンジンであればリンクテーブルという
機能で顧客情報だけ外部から連結できるので、MS SQLでもこの機能が使えないのか調べてください。

あとMS SQLで使えるかわかりませんが、CREAT
E TEMPORARY TABLE文で一時的に連結用の顧客情報を用意することもできるかもしれません。

この回答への補足

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

補足日時:2003/10/28 13:14
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/10/28 12:51

SQL Serverのオンラインヘルプの「分散クエリ」~「リンクサーバー名を使用したデータソースの識別」とか「アドホック名を使用し

たデータソースの識別」及び「OPENROWSET」は参考になりませんか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/10/28 12:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!