• 締切済み

異なるDB間のテーブルをサブクエリにする事はできますか?

「PostgreSQL」と「SQL Server」があり、aspで検索画面を作成しています。 PostgreSQL:Tbl_aaa(顧客No.、顧客名、住所、・・・) SQL Server:Tbl_bbb(顧客No.、契約日、契約金額、・・・) 上記のようなテーブルとフィールドがあるとして、どちらか一方の検索を行う場合は何も問題ありません。 例えば、契約日を検索条件に指定した場合、Tbl_bbbから一致した一覧が抽出されますよね。 抽出された結果を元に、Tbl_aaa.顧客No.=Tbl_bbb.顧客No.で再度抽出し、その結果を画面に表示させる。という事をやりたいのですがどうすればいいのかわかりません。 Tbl_bbbで検索を行い、画面表示の際にDo~Loopなどの中でTbl_aaa.顧客No.=Tbl_bbb.顧客No.となるものを表示させる。という方法を 考えましたが、(件数にもよりますが)結果が表示されるまでかなり時間がかかる為あまりよろしくありません。 そこで、異なるDB間のテーブルをサブクエリなどにする事はできないものかと思い、質問いたしました。 できるのであれば、どうすれば良いのか教えていただけないでしょうか。 できないのであれば、何か良い方法があればご教授下さい。よろしくお願いします。

みんなの回答

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.2

「PostgreSQL」はわからないのですが 「SQL Server 2000」 には DTS が入っています。 DTSパッケージツールをODBC 経由で操作を行えば「PostgreSQL」 と「SQL Server 2000」はさまざまな操作が可能になると思います。 「SQL Server 2005」では 同様にSSISがあります。 DTSパッケージツールを検討してみてはいかがですか?  

searching
質問者

お礼

NOBNNN様 度々のご回答ありがとうございます。 「SQL Server 2000」にもそのような機能があるのですね。私の知らない事ばかりです。奥が深い・・・。 初めて聞く言葉ですので、DTSとは?というところから勉強する必要がありそうです。 ですが、せっかく教えていただいた情報ですので検討したいと思います。ありがとうございました。

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

SQL Server 2005では SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\Northwind.mdb';'Admin';''; Employees) のように他のデータソースをFROMに指定できます。 詳細は ◆OPENROWSET http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/tsqlref/ts_oa-oz_78z8.asp を参照

searching
質問者

お礼

NOBNNN様 ご回答ありがとうございます。 貴重なご意見をいただいたのですが、私が利用しているのはSQL Server 2000です。説明不足でした。 ただ、このような方法があるとわかっただけでも希望がでてきました。できればPostgreSQLで同様の方法はないでしょうか? ご存知の方がいらっしゃいましたらよろしくお願いします。

関連するQ&A

  • 異なるDB間でのJOINやVIEWについて

    Sybaseを使っています。  aaa  bbb の2つのDBを使っています(オーナーはともにxxx)。  DB名aaaには、a_tblが  DB名bbbには、b_tblがあるものとします。 ここで、例えばa_tblを検索したい場合、 use aaa go select * from xxx.a_tbl go で検索結果は得られると思いますが、 b_tblとのJOINを行いたい場合は use bbbの宣言も必要だと思うのですが、どうすれば可能でしょうか? また、あらかじめ、異なるDBにまたがるa_tblとb_tblを結合させたVIEWを 作成することは可能なのでしょうか? 可能であればその方法を教えてください。

  • oracleからSQL Serverへの移行

    oracleからSQL Serverへ移行することになったのですが、副問い合わせで定義したテーブル同士を外部結合するSQL構文が、うまく実現できず、ご教授して頂きたくよろしくお願いします。 下記、oracle 構文をSQL Server構文へ書き換えたい。 select * from (select cal1,cal2,cal3 from tbl1,tbl2 where cal1 >100) aaa, (select cal1,cal2,cal3 from tbl1,tbl2 where cal1 <=100) bbb, tbl3 where aaa.cal1 = bbb.cal1(+) and aaa.cal2 = bbb.cal2(+) and aaa.cal3 = bbb.cal3(+) and aaa.cal1 = tbl3.cal1 よろしくお願いします。

  • 複数パターンの集計結果を一度に取得するには

    sql server 2000 です よろしくお願いします 複数パターンの集計結果をまとめて表示したいのですが SQLが分かりません 下記TBLは1週間の小遣いを格納するTBLです KEYは「name」と「youbi」 ------------ tbl:小遣い帳 name,youbi,kingaku aaa,月,100 aaa,火,100 aaa,水,100 aaa,木,200 aaa,金,200 aaa,土,300 aaa,日,300 bbb,月,100 bbb,火,100 bbb,水,100 bbb,木,100 bbb,金,100 bbb,土,100 bbb,日,200   ・   ・   ・   ・   ・ -------- 上記TBL「小遣い帳」より 各人の使用した金額を集計して表示しますが、 集計は 1.月曜日と火曜日 2.水曜日と木曜日と金曜日 3.土曜日と日曜日 の3パターンです 期待するselectの結果は name,月~火,水~金,土~日 aaa,200,500,600 bbb,200,300,300   ・   ・   ・   ・   ・ どうすれば、上記の結果が得られるでしょうか? よろしくお願いします

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

    いつもお世話になっております。 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のクエリを使って、テーブルの追加をすると同じデータベース内のテーブルしか出てこないので、出来ないのかなと思っていますがどうでしょうか? わかる方がいましたら教えてください。

  • selectでテーブルから2つの値を引っ張る

    table 123 id name ------- 1 aaa 2 bbb 3 ccc table 987 from to ------- 1 2 2 3 3 1 という表があります。これを from to ------- aaa bbb bbb ccc ccc aaa という様に表示させるためのSQL分がわかりません。 1つの表から2つを引っ張るのはどうすればいいのでしょうか?

  • SQL サブクエリで抽出したカラムについて

    サブクエリで抽出したカラムを 本クエリでの結果と一緒に表示したいのですが どのように実現してよいかわからず困っております。 詳細としては、下記のようなことをしたいと考えております。 文中の1)と2)は文章下部にあるSQLを指しております ----------------------------------------------------------- 最初は、1)のように凄く単純なSQLでよかったのですが 仕様が変わり、TBL2で取得した新しいカラムも一緒に 本クエリでの結果として取得できれば、SQLを2回実行せずに済むなと考えたのですが、 2)のように色々と試行錯誤したのですが、実現できません。 (2)は単なる空想ですが…) そこで、わかる方にお伺いしたいのですが、 副問い合わせで取得した複数カラムの中の1つのカラム【2)でいうところのTBL2.X】 を 2)のように"select TBL1.A , TBL2.X"として、結果を得ることは可能でしょうか。 ただし、 TBL1のカラムAは、TBL2に存在しない TBL2のカラムXは、TBL1には存在しない カラムBは、TBL1、TBL2に存在する の条件となっております 環境はMysqlです テーブル結合の方法も考えたのですが、 TBL2で、日付でソートし、その上位100件だけを 持ってきたいと思ったので、副問い合わせで一気に抽出しようとこの方法を考えまし た お分かりになる方がいらっしゃいましたらよろしくお願いします 1)SQL ------------ select TBL1.A from TBL1 where TBL1.B in ( select TBL2.B from TBL2 where 条件 ) 2)想像SQL(こんな感じの事をしたい) -------------- select TBL1.A , TBL2.X from TBL1 where TBL1.B in ( select TBL2.B , TBL2.X from TBL2 where 条件 order by TBL2.日付 desc limit 100 )

    • ベストアンサー
    • MySQL
  • <教えて下さい>Access 重複+表示

    ネットで調べてみましたが、上手く行かないので教えて頂けますか? <やりたいこと> ユーザ名 パーツナンバー シリアルナンバー 修理日 という項目が一つのテーブルにあり、例えば同じ品物でも何回も修理している事が有ります。 <例> ID ユーザ名 パーツナンバー シリアルナンバー 修理日 1  AAA社   111-111     AAA12345    2009/11/10 2  BBB社   222-222     AAA23456    2009/11/10 3  AAA社   111-111     AAA12345    2009/11/01 4  CCC社   111-111     AAA34567    2009/10/30 5  BBB社   222-222     AAA12345    2009/10/29 6  CCC社   111-111     AAA34567    2009/10/15 このようなテーブルから、 ID ユーザ名 パーツナンバー シリアルナンバー 修理日 1  AAA社   111-111     AAA12345    2009/11/10 2  BBB社   222-222     AAA23456    2009/11/10 4  CCC社   111-111     AAA34567    2009/10/30 5  BBB社   222-222     AAA12345    2009/10/29 と、このように、パーツナンバーとシリアルナンバーで重複の可能性があり、 もし重複していた場合は最新の日付のものを表示させ、重複していないデータと合わせて抽出したいです。 こういう抽出は、クエリで出来ますでしょうか?それともSQLを使うのでしょうか? 宜しくご教示お願いいたします。

  • SQL SERVER 2005 にて全テーブルの文字列を置換する方法を

    SQL SERVER 2005 にて全テーブルの文字列を置換する方法を探しています。 ものすごく基礎的なことでしたら申し訳ございません。 SQL SERVER 2005で作成したDBがあるのですが、この中の全てのテーブル内を検索し、 「AAA」という文字列を「BBB」に置換したいと考えています。 上記は例えですが、とにかく全てのテーブル内の全ての文字列を検索し、置換できる方法は無いでしょうか。 どうかご教示のほど、よろしくお願いいたします。

  • Oracleでテーブルの結合について

    SQL初心者です。結合について質問させていただきます。 使用するテーブル (1) 顧客テーブル (2) 取引先テーブル カラム 顧客TBL      取引先TBL 顧客CD       取引先CD 仕入先CD      取引先名称              仕入先名称   :         : とあるとします。抽出したい情報は、 (1) 顧客TBL.顧客CD  = 取引先TBL.取引先CD を条件に取引先TBL.取引先名称 (2) 顧客TBL.仕入先CD = 取引先TBL.取引先CD を条件に取引先TBL.取引先名称 自分が書いたSQL文 SELECT 顧客CD, 仕入先CD, 取引先名称, (SELECT 仕入先名称 FORM 取引先TBL WHERE 顧客TBL.仕入先CD = 取引先TBL.取引先CD AND ROWNUM=1) AS 仕入先名称 FORM 顧客TBL LEFT JOIN 取引先TBL ON 顧客TBL.顧客CD = 取引先TBL.取引先CD これで一応データの取得はできています。 副問合せを使わずに取引先名称と仕入先名称を取得する書き方はあるのでしょうか? 後、自動でSQLを生成してくれるツールとかありましたら紹介してください。

  • 2つのテーブルのカウント結果を1行で取得

    以下のようなデータ件数のテーブルが、別々のDBにあります。 SELECT COUNT(*) FROM AA.TBL01 ------ TBL01 ------ 10 SELECT COUNT(*) FROM BB.TBL02 ------ TBL02 ------ 5 それぞれのテーブルのカウント結果を、1行で取得する ことは可能でしょうか? <取得したい結果> ---------------- TBL01 TBL02 ---------------- 10 5 よろしくお願いします。 (SQL Server2005 Standard)