Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL从不同的数据库获取数据_Sql_Database_Asp Classic_Vbscript - Fatal编程技术网

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

SQL从不同的数据库获取数据,sql,database,asp-classic,vbscript,Sql,Database,Asp Classic,Vbscript,我在服务器上有两个数据库,分别是db_mdone和db_mdtwo。每个数据库中有一列的名称相同,即“Email”。也就是说,两个数据库都有不同的列。有人能在SQL查询中帮助我将列匹配在一起并获取记录吗?db_mdone数据库的记录将显示在页面顶部,另一个数据库的记录将显示在页面底部。他们不需要加入。谢谢这个怎么样 Select Email from db_mdone.dbo.firstTable union all Select Email from db_mdtwo.dbo.secondT

我在服务器上有两个数据库,分别是db_mdone和db_mdtwo。每个数据库中有一列的名称相同,即“Email”。也就是说,两个数据库都有不同的列。有人能在SQL查询中帮助我将列匹配在一起并获取记录吗?db_mdone数据库的记录将显示在页面顶部,另一个数据库的记录将显示在页面底部。他们不需要加入。谢谢

这个怎么样

Select Email from db_mdone.dbo.firstTable 
union all
Select Email from db_mdtwo.dbo.secondTable
这个怎么样

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

基本语法相当简单,可以在表名和模式前面加上服务器名,例如

SELECT t1.Email 
FROM db_mdone.dbo.Table1 t1
INNER JOIN db_mdtwo.dbo.Table2 t2 ON t2.Email = t1.Email
(我不知道你所说的“匹配”是什么意思,所以你需要自己解决实际的查询

我想说的是,最好的方法是将其封装在一个存储过程中——假设您的连接字符串是db_mdone,您可能需要使用sp_addlinkedserver将第二台服务器链接到第一台服务器

sp_addlinkedserver 'db_mdtwo'

基本语法相当简单,可以在表名和模式前面加上服务器名,例如

SELECT t1.Email 
FROM db_mdone.dbo.Table1 t1
INNER JOIN db_mdtwo.dbo.Table2 t2 ON t2.Email = t1.Email
(我不知道你所说的“匹配”是什么意思,所以你需要自己解决实际的查询

我想说的是,最好的方法是将其封装在一个存储过程中——假设您的连接字符串是db_mdone,您可能需要使用sp_addlinkedserver将第二台服务器链接到第一台服务器

sp_addlinkedserver 'db_mdtwo'

这不是检索数据的最有效的方法,但它是构建数据的开始



<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>




这不是检索数据的最有效方法,但它是您构建数据的开始



<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>




您没有提到表名。 你说<代码>每个数据库中的一个栏目被称为Email。我想你中间有一个表:

尽管如此,到目前为止提供的所有解决方案都没有处理您的上一句话:
db_mdone数据库的记录将显示在页面顶部,而另一个数据库的记录将显示在页面底部

再一次,我想你希望所有的记录都放在一起,首先是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)的记录将在您没有提到表名之后提交。 你说<代码>每个数据库中的一个栏目被称为Email。我想你中间有一个表:

尽管如此,到目前为止提供的所有解决方案都没有处理您的上一句话:
db_mdone数据库的记录将显示在页面顶部,而另一个数据库的记录将显示在页面底部

再一次,我想你希望所有的记录都放在一起,首先是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)的记录将在您尝试了什么之后提交?您正在运行什么数据库(MySQL、MSSQL、ORACLE?)请发布您正在处理的查询。SQL=“SELECT*FROM db\u mdone、db\u MDTOW WHERE Email=Email”我是一名初学者,我正在学习做事,并且我成功地做到了这一点sSQL=“SELECT*FROM tblmdfUK ORDER BY ID DESC”。现在我遇到了上面我已经解释过的问题,你试过什么了?您正在运行什么数据库(MySQL、MSSQL、ORACLE?)请发布您正在处理的查询。SQL=“SELECT*FROM db\u mdone、db\u MDTOW WHERE Email=Email”我是一名初学者,我正在学习做事,并且我成功地做到了这一点sSQL=“SELECT*FROM tblmdfUK ORDER BY ID DESC”。现在我有了我上面解释过的问题,我有一个问题。数据库连接呢?我将如何同时连接两个数据库?您需要提供有关您的环境的更多信息。您已经声明了“sql”和asp classic,因此我假设sql server-如果使用access或其他方法,请将其与您当前的连接字符串(减去敏感信息)一起添加到问题中。我有问题。数据库连接呢?我将如何同时连接两个数据库?您需要提供有关您的环境的更多信息。您已经说明了“sql”和asp classic,所以我假设sql server-如果使用access或其他方法,请将其与当前连接字符串一起添加到问题中(减去敏感信息)