他のDBのテーブルと内部結合が可能でしょうか

このQ&Aのポイント
  • sql sever 2005 を使用し、データベースAのテーブルaを内部結合で参照するsqlを作成する際の問題について
  • 別のマシンのsql sever 上にあるデータベースBのテーブルbを参照するには、内部結合が可能か検討している
  • ストアードプロシージャで、データベースAのテーブルaを参照しながら、データベースBのテーブルbを参照することも原理的に可能か詳細を調査中
回答を見る
  • ベストアンサー

他のDBのテーブルと内部結合が可能でしょうか

他のDBのテーブルと内部結合が可能でしょうか sql sever 2005 を使用します。このたび、データベースAのテーブルaを定期的に検索するsqlを作成することになりました。このsql文は、ストアードプロシージャとして登録予定です。 その際、テーブルbを内部結合で参照します。例として、テーブルaは社員番号があり、テーブルbは社員番号、社員名があります。(テーブルbは社員マスター) テーブルaを参照し、その社員名を内部結合(INNER JOIN)で取り出します。 ここで、テーブルa,bが共に、同じデータベース内にある場合は、問題ないのですが、 テーブルbは、別のマシンのsql sever 上にあります。(したがって、データベース名も異なります) このような状態で、内部結合による参照は可能でしょうか? また、内部結合ができないまでも、ストアードプロシージャで、データベースAのテーブルaを参照しながら、別のマシンのデータベースBのテーブルbを参照することは、原理的に可能でしょうか。 なお、データベースは共にsql server 2005を使用します。

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

  • ベストアンサー
  • KHSSSK
  • ベストアンサー率76% (13/17)
回答No.1

まずリンクサーバの登録をします。Managment Studioからサーバオブジェクトを展開しリンクサーバを右クリックし新しいリンクサーバをクリック。画面の指示に従って登録してください。 SQL文の例 SELECT AA.*, BB.社員名 FROM 別のマシンのインスタンス名.別のマシンのデータベース名.dbo.社員マスター AS BB INNER JOIN dbo.テーブルa AS AA ON BB.社員コード = AA.社員コード VPNを構築していれば遠方のSQLサーバともおなじ要領で結合することができます。

tatsu99
質問者

お礼

出来るか否だけでなく、具体的な手順まで提示して頂きありがとうございました。 実は、ある案件で、このような事が出来るか否かを判断する必要がありました。 出来るか否かで対処の方法が変わりますので、非常に今後の対応が楽になりました。 こちらが期待した以上の回答をしていただき、誠にありがとうございました。

関連するQ&A

  • 他のデータベースとのテーブル結合

    いつもお世話になっております。 VB.netでwindowsアプリケーションの作成しているところです。 SQLサーバーのテーブルを参照していますが、テーブルの結合は同じデータベース内にないと結合できないのでしょうか? 'SQL接続処理 Dim strConn As String = "Password='';User ID=sa;Initial Catalog=test;Data Source=server1" と、testというデータベースがありその中に幾つかテーブルがあります。 このtestデータベースにないテーブルが必要になり、aaaデータベース内の テーブルを結合しようとしたのですが、出来ません。 Catalog=test,aaaとやってみたり、SELECT * FROM tbl1,aaa.tbl2などとしてみましたが、遠いようです。 SQLのクエリを使って、テーブルの追加をすると同じデータベース内のテーブルしか出てこないので、出来ないのかなと思っていますがどうでしょうか? わかる方がいましたら教えてください。

  • テーブルを結合して新規にテーブルに・・・

    アクセス2003でSQLを組んでデータベースを作っています。 まず、ユニオンクエリを使ってAクエリとBクエリを結合しました。 この結合したものを新規にテーブルを作成したいのですが、どうすれば良いでしょうか? 手順を教えて頂ければ幸いです。 よろしくお願いします。

  • 2台のサーバー間でのテーブル結合方法

    2台のサーバーでそれぞれSQL Server2000 とSQL Server2005を動かしています。 2台のサーバーの中の別のDBの中にあるテーブルを結合したいのですが、可能なのでしょうか? ちなみに [データベース名1]のサーバーに接続した状態で SELECT a.*,b.* FROM [データベース名1].[dbo].[テーブル名1] AS a INNER JOIN [ServerIPアドレス].[データベース名2].[dbo].[テーブル名2] AS b ON a.ID=b.ID とやると 「sys.serversにサーバー 'ServerIPアドレス' が見つかりませんでした。 正しいサーバー名を指定したかどうかを確認してください。 必要であればストアド プロシージャ sp_addlinkedserver を実行し、 サーバーを sys.servers に追加してください。」 というエラーになってします。 宜しくお願いします。

  • テーブル結合

    度々お世話になっています。 Mysqlのテーブル結合したいと思ってます。 テーブル構成は以下のとおりですのでご参照ください。 ■テーブルA id | name 1 | bind 2 | samba 3 | apache ■テーブルB id | detail 3 | test 3 | test 1 | test ■結合結果 id | count 1 | 1 2 | 0 3 | 2 テーブルA,Bはidコラムで紐づいています。 この際、テーブルBのidごとにレコード数を出力したいのですが、 どういったSQLを流せば良いでしょうか。 ご教示願います。

    • ベストアンサー
    • MySQL
  • 固定値を含む結合と複数テーブルの結合について

    「1.固定値を含む結合」と「2.複数テーブルの結合」について教えて下さい。 最近oracleを使い始めてSQLで表の結合を書く場面があるんですが LEFT(RIGHT) JOIN を使うのか、(+)を使って書くのかで迷っています。 LEFT(RIGHT) JOINだと固定値を含めて外部結合しようとするとエラーになってしまいます。 それが嫌で(+)を使っていたんですが 今度は複数のテーブルを(+)で結合しようとするとエラーになってしまいます。 (AテーブルとBテーブル、AテーブルとCテーブルなど?) こういう場合はどうすれば良いのでしょうか? とりあえず副参照をFROMに指定して対処してるんですが 何かきちんとした書き方があるのでしょうか?誰か教えて下さい。

  • テーブルを結合

    テーブルの結合に関して質問します。 ネットなどでinner joinを使った複数のテーブル結合が参考として 書いてあったのですが(3つまで), 4つテーブルを結合する事は 出来るのでしょうか? A,B,CテーブルにはID,NAMEがあります。 DテーブルにはA,B,CテーブルのIDがあります。 参考サイトを見て3つのテーブルを結合するSQLが以下になります。 SELECT a.name, b.name, c.name FROM a INNER JOIN (b INNER JOIN c ON b.id = c.id) ON a.id = c.id よろしければアドバイスお願いします。

  • 内部結合

    テーブルの自己結合について教えてください。 以下のようなテーブルAがあります。 Table A collumn1(企業名) collumn2(フラグ) B           0 C           0 D           1 B           1 C           0 E           0 E           1 E           1 これにおいて、フラグが1の企業でかつ フラグの如何に関わらず同じ企業名があればその企業名を とってきたいです。 上の例では企業BとEとなります。 企業名が同じでもフラグが0のものばかりであればとってきません。 この条件を私が考えたのは select collumn1 from A where collumn2 = 0 and collumn1 = (select collumn1 from A where collumn2 = 1) というSQLなのですが、うまく取れません。 なにも取って来なくなります。 何がいけないでしょうか。 アドバイス、よろしくお願いいたします。

  • あるDBから別のDBのテーブルをselectしたい

    mysqlのデータベースAとBが存在するとして、 Aをuseしている状態で、Bのデータベースのテーブルをselectするには、どのような構文でSQLを実行すればよいでしょうか。

    • ベストアンサー
    • MySQL
  • 同じ構成のテーブルを結合する

    AとBという全く同じ列構成からなるテーブルの結合を考えています。 イメージとしては、Aのレコードが全て表示された下にBのレコードが列挙されるような感じです。 "INNER JOIN"、"LEFT OUTER JOIN"で行った結果、AとBでキーに同じ値を持つと、どちらかの値で上書きされてしまうみたいなのでイメージ通りにはいきませんでした。また、"CROSS JOIN"ではAの右側にBの内容が追加されてしまうのもあって、イメージ通りにできませんでした。 どなたかこのSQL文が分かる方はお教えいただけないでしょうか? よろしくお願いします。 データベース:SQL Server

  • 商品テーブルと2つの在庫テーブルの結合ができない

    商品のデータベースがあるんですが、一つの商品テーブルに複数の店舗の商品をまとめて登録しています。在庫数は店舗別のテーブルで分けているのですが、これをSQLで商品コードで結合ができません。 仮に商品がA、B、Cと登録されていたとして、店舗1にはAとBの商品があるため2つの在庫数を設定しており、店舗2にはBとCの商品があるため2つの在庫数を設定しています。 つまり片方のみの商品もあれば両方に存在する商品があります。 このときにSQLで商品情報を取得する場合に、結合したいのですが結果が0件となり上手く結合ができません。 商品コードがBのときにSELECT文で両店舗の在庫数を同時に取得したいし、AやCではそれぞれの店舗在庫を取得したいのですが、何か良い方法はないものでしょうか?

    • ベストアンサー
    • MySQL