出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

2つのDBでINNER JOIN?   nanaさん [2002/02/18 15:16:45] [1679]
  Re:2つのDBでINNER JOIN?   Tomitomiさん [2002/02/18 17:57:25] [1680]
  Re:2つのDBでINNER JOIN?   北岳さん [2002/02/18 23:54:01] [1685]
    Re:2つのDBでINNER JOIN?   喜平さん [2002/02/19 2:15:45] [1687]
  Re:2つのDBでINNER JOIN?   よねさん [2002/04/01 0:43:44] [1941]

[1679] 2つのDBでINNER JOIN?
投稿者:nanaさん 2002/02/18 15:16:45
はじめまして。
はじめて書き込みさせていただきます。

1つのDB内の複数のテーブルを結合して検索するときに
INNER JOINを使って集計できると思うのですが、
これを、別のDBにあるテーブル同士をINNER JOINの様に
結合して検索することは可能でしょうか???
(DBはSQLServer、aspはVisualInterDev6.0、Win2000の環境です)

どうぞ宜しくお願いいたします。

[1680] Re:2つのDBでINNER JOIN?
投稿者:Tomitomiさん 2002/02/18 17:57:25
こんにちは、Tomitomiです。

> 1つのDB内の複数のテーブルを結合して検索するときに
> INNER JOINを使って集計できると思うのですが、
> これを、別のDBにあるテーブル同士をINNER JOINの様に
> 結合して検索することは可能でしょうか???
> (DBはSQLServer、aspはVisualInterDev6.0、Win2000の環境です)

私は、SQLServerはまったく触ったことありませんが、
AccessやOracleの例では、AサーバとBサーバがあり、Aサーバ上で SQLを実行するのであれば、
AサーバにBサーバのテーブルをリンクすれば良いのでは?

[1685] Re:2つのDBでINNER JOIN?
投稿者:北岳さん 2002/02/18 23:54:01
Accessで、テーブルをリンクしたくない(理由不明)場合のスクリプト例がありました。
TRY!ASPの #32560 「2つのデータベース間でSQL文字列のみで1つのクエリーを作成する方法」
のスレッドの、いかんともしがたい男さんのレス。
ACCESS97で動作確認したら、確かに動作しました。
以下転用。
 
d:\alias\1.mdb(field1 あり) と d:\alias\2.mdb(field2 あり)を結びます。
dbの1の方を普通の方法で書いた場合、2の方は、SQL文中でフルパス指定します。
 
--------------------
<%
set rs=Server.CreateObject("ADOdb.Recordset")
set db1=Server.CreateObject("ADOdb.Connection")
db1.Provider="Microsoft.Jet.OLEdb.4.0"
db1.mode=3
db1.ConnectionString="d:\alias\1.mdb"
db1.Open
SQL="SELECT * FROM [d:\alias\2.mdb].[table2] INNER JOIN table1 ON table1.field1=table2.field2"
rs.Open SQL,db1,3,3
Response.Write rs.RecordCount
%>
--------------------
 
私は、SQLServer、Oracleとも(CD以外は)まったく触ったことありません。
SQLServerでもこのまま通じるか知りませんが、判りましたらぜひ結果を教えて下さい。
(SQLServerに切り替えようか、迷ってまして、ACCESSとどのくらい共通性があるのかと・・・。)

[1687] Re:2つのDBでINNER JOIN?
投稿者:喜平さん 2002/02/19 2:15:45
> SQL="SELECT * FROM [d:\alias\2.mdb].[table2] INNER JOIN table1 ON table1.field1=table2.field2"

> (SQLServerに切り替えようか、迷ってまして、ACCESSとどのくらい共通性があるのかと・・・。)
 もちろん、sql server では、そういうsql は使えません。

[1941] Re:2つのDBでINNER JOIN?
投稿者:よねさん 2002/04/01 0:43:44
> 1つのDB内の複数のテーブルを結合して検索するときに
> INNER JOINを使って集計できると思うのですが、
> これを、別のDBにあるテーブル同士をINNER JOINの様に
> 結合して検索することは可能でしょうか???
> (DBはSQLServer、aspはVisualInterDev6.0、Win2000の環境です)
よねと申します。
たまたま仕事で上記の内容をやる必要があり、結果が出ましたのでお知らせします。

まず結論から言いますと2つの「DBでinnner join」は可能、です。

例えばtest1とtest2というデータベースがあり、test1の中に「注文書」、test2の中に「得意先マスター」があるとした場合、

dim SQL
dim DB
dim RS

Set DB = Server.CreateObject("ADODB.Connection")
DB.open "***接続文字列***"
Set RS = Server.CreateObject("ADODB.Recordset")

SQL="select 注文書.ID,注文書.TOKUISAKI_CD,test2.dbo.得意先マスター.TOKUISAKI_NM from 注文書 inner join test2.dbo.得意先マスター on 注文書 = test2.dbo.得意先マスター"

RS.Open SQL

こんな感じでレコードセットを取得する事ができました。
つまり、join句でつなぐ方のテーブル名に"データベース名.dbo."を付け足せばいいという事ですね(多分)。
ちなみに、この場合Open命令をかけるデータベースはTest1だけで良いようです。

環境は
MSDE(SQL-Server7.0)
Windows98
です。
それでは。



TreeBBS For ASP V.0.1.3
Program By YasNet