Выбор 2 таблиц из 2 разных баз данных (ДОСТУП)

вот у меня связь

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

поэтому для работы с двумя базами данных у меня есть 2 adoCon, и когда я делаю выбор, я выбираю из каждой нужной мне базы данных.

Теперь о проблеме... в этой ситуации я смогу получить всю информацию только от одного, а затем от другого. но то, что я хочу, это иметь возможность собрать вместе.

db1.tblcats имеет категории, а db2.tblcats имеет категории и подкатегории, поэтому в дополнение к возможности выбора обоих вместе мне нужно знать, какая кошка из какой базы данных


Шаг 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

как я могу узнать, какая запись пришла из какой базы данных? Потому что мне нужно действовать по-разному для каждого


person Y.G.J    schedule 26.06.2010    source источник
comment
Какая у вас среда программирования?   -  person David-W-Fenton    schedule 27.06.2010


Ответы (1)


Вы можете использовать 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 обычно быстрее.

person Fionnuala    schedule 26.06.2010
comment
не работает... Я получаю: синтаксическая ошибка в предложении FROM, имейте в виду, что обе базы данных имеют пароль и что они не находятся в одной папке - person Y.G.J; 26.06.2010
comment
хорошо ... я отредактировал вопрос - пожалуйста, продолжайте с вашей помощью :-) - person Y.G.J; 26.06.2010
comment
посмотрите внимательно, так как я использую не внутреннее соединение, а объединение. как я могу добавить новый столбец, который будет иметь номер для каждой записи (1, если с локального и 2, если с удаленного)? - person Y.G.J; 26.06.2010