SQL从不同的数据库中获取数据

时间:2012-03-27 12:50:23

标签: sql database asp-classic vbscript

我在服务器名称db_mdone和db_mdtwo上有2个数据库。 EACH数据库中的一列是同名的“电子邮件”。也就是说,两个数据库都有不同的列。有人可以帮我在SQL查询中将列匹配在一起并获取记录吗? db_mdone数据库的记录将显示在页面顶部,另一个记录将显示在页面底部。他们不需要加入。感谢

4 个答案:

答案 0 :(得分:3)

这个怎么样?

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

答案 1 :(得分:1)

基本语法非常简单,您可以在表名和模式前加上服务器名称,例如

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'

答案 2 :(得分: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>



答案 3 :(得分: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上添加一个简单的整数列,这样你就可以使用它来排序结果:

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)之后