我有两个来自两个不同数据库的表。
例如:
Table: Articles1 - Database: db1
Attributes: id date headline text
Table: Articles2 - Database: db2
Attributes: id date headline text
现在我想用两个表中的文章组合并按日期排序。据我所知,不可能跨两个不同的数据库进行查询?
我该怎么办?制作临时表并插入alle文章并排序和打印?制作一份cronjob获取所有文章?
顺便说一下。我正在使用MS SQL和ASP。
提前致谢
在我收到som回答后,我正试图这样做:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Provider;Data Source=myDataSource;Initial Catalog=Catalog1;User Id=myID;Password=myPassword1;"
Set Conn2 = Server.CreateObject("ADODB.Connection")
Conn2.Open "Provider=Provider;Data Source=myDataSource;Initial Catalog=Catalog2;User Id=myID;Password=myPassword2;"
strSQL = "SELECT id, datetime, headline, text "&_
"FROM Conn.dbo.vArticles "&_
"UNION ALL "&_
"SELECT AutoID as id, Dato as datetime, Notat as headline, Notat as text "&_
"FROM Conn2.dbo.Notat WHERE NotatTypeID = '5'"
DIM objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open mySQL, Conn
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
但是有些错误。
答案 0 :(得分:3)
可以跨2个不同的数据库进行查询。只需使用3部分名称格式。
SELECT id, date, headline, text
FROM db1.dbo.Articles1
UNION ALL
SELECT id, date, headline, text
FROM db2.dbo.Articles2
以上假设数据库位于同一SQL Server实例上。如果不是,您将需要设置链接服务器并使用4部分名称格式。
答案 1 :(得分:1)
这是未经测试的,但只要数据库驻留在同一主机上,您就可以执行以下操作:
SELECT db,id,date,headline,text
FROM (
SELECT 'db1' AS db,id,date,headline,text FROM db1.dbo.Articles1
UNION ALL
SELECT 'db2' AS db,id,date,headline,text FROM db2.dbo.Articles2
) tmp
ORDER BY date DESC
更新:
根据您提供的代码:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Provider;Data Source=myDataSource;Initial Catalog=Catalog1;User Id=myID;Password=myPassword1;"
strSQL = "SELECT id, datetime, headline, text "&_
"FROM db1.dbo.vArticles "&_
"UNION ALL "&_
"SELECT AutoID as id, Dato as datetime, Notat as headline, Notat as text "&_
"FROM db2.dbo.Notat WHERE NotatTypeID = '5'"
DIM objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, Conn
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
其中db1和db2是数据库的名称。我不习惯asp,所以我不能100%确定语法
您为SQL语句调用的变量名中似乎存在错误。我已将objRS.Open mySQL, Conn
行更新为objRS.Open strSQL, Conn