2012-03-27 66 views
0

得到的數據我對服務器名稱db_mdone和db_mdtwo 2個數據庫。 EACH數據庫中的其中一列是同名的「電子郵件」。也就是說,兩個數據庫都有不同的列。有人可以幫助我在SQL查詢中將列匹配在一起並獲取記錄嗎? db_mdone數據庫的記錄會在頁面的頂部顯示和其他的記錄會在頁面的底部顯現。他們不需要加入。感謝SQL來自不同數據庫

+0

後記錄你嘗試過什麼?你在運行什麼數據庫(MySQL,MSSQL,ORACLE?)請發佈你正在處理的查詢。 – GuZzie 2012-03-27 12:54:05

+0

SQL = 「SELECT * FROM db_mdone,db_mdtwo其中,email =電子郵件」 我是一個初學者 – 2012-03-27 12:56:31

+0

我在學習做的事情,我設法使這個工作sSQL = 「SELECT * FROM tblmdfUK ORDER BY ID DESC」。現在我遇到了上述問題 – 2012-03-27 12:57:20

回答

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 

(我不知道你所說的「匹配了」,所以你需要找出自己的實際查詢的意思。

到去這樣做,我會說是最好的方法包裹它在存儲的程序 - 您可能需要使用sp_addlinkeddserver到第二個服務器鏈接到第一假設你的連接字符串是db_mdone

sp_addlinkedserver 'db_mdtwo' 
+0

謝謝。這些數據庫位於ftp的相同文件夾中。 – 2012-03-27 13:13:37

+0

我有一個問題。數據庫連接怎麼樣?我該如何同時連接兩個數據庫? – 2012-03-27 14:29:32

+0

您需要提供有關您的環境的更多信息。你說「SQL」和ASP經典,所以我認爲SQL服務器 - 如果使用訪問或別的東西,添加的問題與您當前的連接字符串(減去敏感信息)一起 – 2012-03-28 10:26:35

0

這不是檢索數據,最有效的方法,但這是一個開始爲你建立。



<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上。如果你真的希望他們在頁面的不同位置,你將不得不對兩個單獨的查詢進行處理,並在你的應用程序中處理它。

因此,要做到這一點,我建議你添加一個簡單的整列的各選擇,所以你可以用它來排序結果:

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)