2012-03-27 62 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)