从2个不同的数据库中选择2个表(ACCESS)

时间:2010-06-26 09:22:26

标签: ms-access select ado union

这是我的连接

strCon="DBQ=" & Server.Mappath("db.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};PWD=password;"
set adoCon=server.createobject("adodb.connection")
adoCon.Open strCon

所以为了使用2个数据库,我有2个adoCon,当我选择时,我需要从每个数据库中选择

现在针对这个问题...... 在这种情况下,我只能从一个,然后从另一个获得所有信息。但我想要的是能够把它们放在一起。

db1.tblcats有类别,db2.tblcats有类别和子类别 所以除了能够同时选择两者之外,我还需要能够知道什么猫来自什么db


大帮助后的第2步

这是我的代码

strSQL = "SELECT name FROM tblcats union " _ 
& "select name from [MS Access;PWD=pass;DATABASE=" & Server.Mappath("../shop.mdb") & "].tblcats as bcats where bcats.father=50"
                                rs.CursorType = 3
                                rs.LockType = 3
                                rs.Open strSQL, strCon
while not rs.eof
response.write rs("name")&"<br>"
rs.movenext
wend

我怎么知道什么记录来自什么数据库?因为我需要为每个人采取不同的行动

1 个答案:

答案 0 :(得分:4)

您可以使用IN:

SELECT t1.*, t2.* 
FROM T1 
INNER JOIN 
(SELECT * FROM atable 
IN 'C:\Docs\DB2.mdb') t2
ON t1.ID=t2.ID

编辑:

sc = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\docs\other.mdb"
cn.open sc

s="SELECT * FROM t1 INNER JOIN " _
& "[MS Access;PWD=databasePWD;DATABASE=C:\docs\db.mdb].t2 ON t1.ID=t2.ID"

rs.Open s, cn

编辑2:

您可以使用别名来标识字段来自哪个数据库:

s="SELECT * FROM table1 t INNER JOIN " _
& "[MS Access;PWD=databasePWD;DATABASE=C:\docs\db.mdb].m ON t.ID=m.ID"

 msgbox rs.fields("m.code") & " " & rs.fields("t.code")

编辑3

或者您可以添加虚拟字段:

 SELECT 1 AS "DB", Field, Field FROM  ...
 UNION ALL
 SELECT 2 AS "DB", Field, Field FROM

UNION ALL通常更快。