2012-02-21 12 views
5

sqldeveloperで異なるテーブルと2つの接続があります。sqldeveloperの異なるOracle接続のクエリ

さんが言わせて:テーブルと

ConnectionA:A、テーブルとB、C ConnectionB:D、E、F

今、私はこのようなクエリを持つようにしたい:

選択aa.name、dd.id からa aa、D dd;

どうすればいいですか?

+2

テーブルは接続に固有のものではありません。おそらくあなたはスキーマを意味するでしょうか? –

+0

sqldeveloperで独自のテーブルを持つ接続を作成できます – user999379

+4

@ user999379 - 接続にはテーブルがありません。接続を使用すると、特定のオブジェクトセット(スキーマ)を所有する特定のユーザーとして特定のデータベースにログインできます。接続にはオブジェクトがありません。 –

答えて

9

単一のSQL文を使用して2つの異なるデータベースのオブジェクトを照会する場合は、2つのデータベース間にデータベースリンクを作成する必要があります。データベースリンクは、データベースに存在し、クエリツールとは独立したオブジェクトです。データベースAでは、例えば、データベース・リンク

CREATE DATABASE LINK to_b 
    CONNECT TO username IDENTIFIED BY password 
    USING tns_alias_on_a_pointing_to_b 

を作成することができますそして、あなたはAに接続するときに、あなたは

SELECT aa.name, dd.id 
    FROM a aa, 
     [email protected]_b dd 
WHERE aa.some_key = dd.some_key 
+0

SQLエラー:ORA-12154:TNS:指定された接続識別子を解決できませんでした。 – user999379

+0

@ user999379 - 'SELECT'文を実行するとこのエラーが発生すると思いますか?データベースリンクを作成すると、データベースAにTNSエイリアスが存在し、データベースBを指す必要があります.Bを指すAのTNSエイリアスは、ローカルシステムで定義されたTNSエイリアスとは異なる場合があります(特にローカルのtnsnames.oraファイルでの名前付けを使用して)。 –

+1

同じOracle DBサーバー上で実行されている「ライブ」データベースと「デモ」データベースがあります。それらは両方とも同じtnsnames.oraファイルに設定されています。だから私にとっては、私のライブ接続でこの文を実行するのと同じくらい簡単でした: 'CREATE DATABASE LINK demodb USING 'demodb';' demodbはtnsnames.oraのデモデータベースのSIDです。今度は、テーブル名の最後に@demodbを追加するだけで、ライブDB接続からデモデータベーステーブルをクエリできます。 – Baodad

関連する問題