SQL — где столбец в другом наборе записей из другой базы данных

Я знаком с предложением «IN» в SQL, например.

select * from table1 where myfield in (select myfield from table2)

Я сейчас между двумя базами данных! Я хочу выбрать набор записей, где телефон находится в другой записи из другой базы данных. Я не работаю напрямую с сервером SQL. Вы можете предложить мне более сложный метод с использованием языка на стороне сервера, например php или asp и т. д.

Мой тест в классический жерех (где connectionObject1 подключается к первой базе данных, а connectionObject2 подключается ко второй базе данных):

sql="select phone from persons"recordset1.open sql,connectionObject1

sql="select * from persons where phone in ("& recordset1 &")"recordset2.open sql,connectionObject2

Ошибка выполнения Microsoft VBScript «800a000d»

Несоответствие типов

0

Решение

Ваша ошибка здесь:

sql="select * from persons where phone in ("& recordset1 &")"

Вы пытаетесь объединить строки, но recordset1 это набор записей, как следует из названия, а не строка.

Я только что посмотрел это. Вы должны быть в состоянии преобразовать ваш набор записей в строку с GetString таким образом:

sql = "select * from persons where phone in (" &
recordset1.GetString(adClipString, -1, ",", ",") &
")"

Если телефоны не являются числовыми, вам понадобятся дополнительные кавычки:

sql = "select * from persons where phone in (" &
"'" &
recordset1.GetString(adClipString, -1, "','", "','") &
"'" &
")"

Я могу ошибиться с синтаксисом. В этом случае посмотрите ваши документы.

2

Другие решения

Используйте полные имена объектов в SQL, это должно работать:

sql="select * from [DB1Name].[SchemaName].persons where phone in (select phone from [DB2Name].[SchemaName].persons)"
1

По вопросам рекламы [email protected]