2012-03-27 14 views
0

私はサーバ名db_mdoneとdb_mdtwoに2つのデータベースを持っています。各データベースの列の1つは、同じ名前の「電子メール」です。つまり、両方のデータベースに異なる列があります。誰かが列を一致させてレコードを取得するためにSQLクエリで私を助けてくれますか? db_mdoneデータベースのレコードはページの上部に表示され、他のレコードはページの下部に表示されます。彼らは参加する必要はありません。ありがとうSQLは異なるデータベースからデータを取得します

+0

何を試しましたか?どのデータベースを実行していますか(MySQL、MSSQL、ORACLE?)作業しているクエリを投稿してください。 – GuZzie

+0

SQL = "SELECT * FROM db_mdone、db_mdtwo WHERE Email = Email"私は初心者です –

+0

私はこれを行うことを学んでおり、これをsSQL = "SELECT * FROM tblmdfUK ORDER BY ID DESC"で動作させることができました。今私は上に説明した問題がある –

答えて

3

どうやってですか?

Select Email from db_mdone.dbo.firstTable 
union all 
Select Email from db_mdtwo.dbo.secondTable 
0

基本的な構文はかなり簡単です。テーブル名とスキーマの前にサーバー名を付けます。

SELECT t1.Email 
FROM db_mdone.dbo.Table1 t1 
INNER JOIN db_mdtwo.dbo.Table2 t2 ON t2.Email = t1.Email 

は(私はあなたがあなた自身の実際のクエリをうまくする必要がありますので、「最高のマッチング」によって何を意味するかわからない。

私が言うこれはやって行くための最善の方法あなたは、接続文字列は、これはデータをretreivingの最も効率的な方法ではありません

sp_addlinkedserver 'db_mdtwo' 
+0

ありがとう。データベースはftp上の同じフォルダにあります。 –

+0

私は問題があります。データベース接続はどうですか?どのように私は同時に2つのデータベースに接続しますか? –

+0

環境に関する詳細情報を提供する必要があります。あなたは 'sql'とasp-classicを指定しているので、SQLサーバーを想定していました。アクセスやその他のものを使用している場合は、現在の接続文字列(重要な情報を除いたもの) –

0

db_mdoneすることであると仮定すると最初に2つ目のサーバをリンクするsp_addlinkeddserverを使用する必要がありますprocedure-、保存されたでそれをラップするのではなく、それはあなたの上に構築するためのスタートです。



<html> 
<body> 

<% 
'============================================================= 
' xxx.xxx.xxx.xxx = IP Address for the SQL Server 
' yyyyyyyy = User Id for the database 
' zzzzzzzz = Password for the database 
'============================================================= 
strWebDSN = "Provider=SQLOLEDB;server=xxx.xxx.xxx.xxx;uid=yyyyyyyy;pwd=zzzzzzzz;database=db_mdone" 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open strWebDSN 
set rs = Server.CreateObject("ADODB.recordset") 
rs.Open "Select * from DATABASETABLENAME", conn 

do until rs.EOF 
     for each x in rs.Fields 
      Response.Write(x.name) 
      Response.Write(" = ") 
      Response.Write(x.value & "<br />") 
     next 
     Response.Write("<br />") 
     rs.MoveNext 
loop 

rs.close 
conn.close 
%> 

<hr> 

<% 
'============================================================= 
' xxx.xxx.xxx.xxx = IP Address for the SQL Server 
' yyyyyyyy = User Id for the database 
' zzzzzzzz = Password for the database 
'============================================================= 
strWebDSN = "Provider=SQLOLEDB;server=xxx.xxx.xxx.xxx;uid=yyyyyyyy;pwd=zzzzzzzz;database=db_mdtwo" 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open strWebDSN 
set rs = Server.CreateObject("ADODB.recordset") 
rs.Open "Select * from DATABASETABLENAME", conn 

do until rs.EOF 
     for each x in rs.Fields 
      Response.Write(x.name) 
      Response.Write(" = ") 
      Response.Write(x.value & "<br />") 
     next 
     Response.Write("<br />") 
     rs.MoveNext 
loop 

rs.close 
conn.close 
%> 


</body> 
</html> 



0

あなたは上記のテーブル名を指定しませんでした。 one of the columns in each DATABASEは電子メールと呼ばれています。私はそれによってあなたが一緒にすべてのレコードを望んでいることを想像し、The records of db_mdone database is going to show at the top of the page and the records of the other is going to show at the bottom of the page

再び:私はそれにもかかわらず、これまでに提供されるすべてのソリューションは、あなたの最後の文に対処していないあなたは:)途中で

をテーブルを持っている想像しますまず、db_mdoneのものとdb_mdtwoのものとを比較します。あなたが実際にページの別の場所にそれらを必要とする場合、あなたは2つの別のクエリにあなたのアプリケーションでそれを処理する必要があります。私はあなたが結果を注文するためにそれを使用することができますので、選択した各上の単純な整数列を追加提案することを達成するので

、:

select Email, 0 as order_column from db_mdone 
UNION 
select Email, 1 as order_column from db_mdtwo 
ORDER BY order_column 

こうして、0(db_mdone)を持つすべてのレコードが最初に来ています

の後に1(db_mdtwo)のすべてのレコード
関連する問題