Я пытаюсь получить данные из таблиц, которые находятся в разных базах данных, но имеют одинаковую схему.
Имена баз данных IE будут выглядеть примерно так: DB1, DB2, DB3.
Все они содержат таблицу 'MyTable' и имеют внешний KEY, который соответствует первичному KEY 'MainTable' в БД, которую мы будем называть MainDB, я бы просто сделал объединение и позже позаботился о производительности. , но проблема, в данном конкретном случае, иногда в том, что DB3 (или любой из них) не существует, и это может привести к сбою моего запроса и необходимости его ежедневного редактирования.
MainTable имеет столбцы, которые в сочетании образуют имя БД, к которой нужно присоединиться в каждом столбце, для простоты я назову этот столбец с именем ForeignDBName. Я хочу что-то вроде
SELECT
MainPK
, FName
, LName
, BirthDate
, ForeignDBName
FROM
MainDB.dbo.MainTable
LEFT JOIN
(
SELECT
BirthDate
,MainTableFK
FROM
DB1.dbo.MyTable
UNION ALL
SELECT
BirthDate
,MainTableFK
FROM
DB2.dbo.MyTable
UNION ALL
SELECT
BirthDate
,MainTableFK
FROM
DB3.dbo.MyTable
) B ON B.MainTableFK = MainPK