Схема SQL-запроса и данные в одну строку из двух баз данных - PullRequest
0 голосов
/ 29 июня 2019

У нас есть данные, которые были случайно объединены на нашей производственной площадке, но у нас все еще есть данные, разделенные на нашей тестовой площадке / базе данных. Я хотел бы иметь возможность запрашивать данные клиентов из обеих баз данных для сравнения на основе уникального идентификатора клиента. Что я хотел бы видеть в результатах запроса, так это таблицы схем, столбцы и первичные ключи uniqueidentifier таблиц, в которых у таблицы есть соответствующий внешний столбец, содержащий ключ клиента.

Например, если у клиента есть счет-фактура, клиент cst_key будет находиться в inv_cst_key ac_invoice. Мне нужен первичный ключ этой таблицы, который будет взят из столбца inv_key этой строки. Таким образом, если бы у клиента было два счета-фактуры, два списка inv_key были бы перечислены как отдельные строки.

Я установил ApexSQL Search для поиска в столбцах уникального идентификатора базы данных для ключа клиента, и он предоставил таблицу и внешние столбцы, где существовал cst_key клиента (например, inv_cst_key), но мне все еще нужен первичный ключ (например, inv_key) этого строка таблицы, в которой находится ключ клиента. Я пытался использовать эти результаты поиска для создания чего-то с помощью Excel (перемещения по таблицам, операторам, столбцам и т. Д.) И копирования / вставки этого в SSMS, но запрос извлекает миллионы результатов в процессе его настройки ...

DECLARE @cstkey uniqueidentifier
SET @cstkey = 'xxxxxxxxxxxxxxxxxx'

SELECT cst_key, 
inv_key,
-- many more columns
FROM co_customer 
LEFT JOIN ac_invoice ON cst_key = inv_cst_key 
-- more LEFT JOINS
WHERE cst_key = @cstkey

Кроме того, я знаю, как запрашивать данные из 2 баз данных, но я не знаю, как делать запросы, чтобы видеть имена таблиц и столбцов в строке рядом с данными столбца.

DECLARE @cstkey uniqueidentifier
SET @cstkey = 'xxxxxxxxxxxxxxxxxx'

SELECT cst1.cst_key AS cst_key_1, inv1.inv_key AS inv_key_1, 
cst2.cst_key AS cst_key_2, inv2.inv_key AS inv_key_2

FROM db1name.dbo.co_customer cst1
LEFT JOIN db1name.dbo.ac_invoice inv1 (NOLOCK) ON inv1.inv_cst_key = cst1.cst_key
INNER JOIN db2name.dbo.co_customer cst2 (NOLOCK) ON cst1.cst_key = cst2.cst_key
INNER JOIN db2name.dbo.ac_invoice inv2 (NOLOCK) ON inv2.inv_cst_key = cst2.cst_key

WHERE cst1.cst_key = @cstkey 
AND cst2.cst_key = @cstkey

Я бы хотел, чтобы результаты выглядели примерно так ...

DB1 | T1 | PC1 | PC1 Data Key | FC1 | FC1 Data Key || DB2 | T2 | ...  
--------------------------------------------------------------------  

DB = База данных, T = Таблица, ПК = Основной столбец, FC = Внешний столбец
Кстати, ключом данных FC1 также будет cst_key, как упомянуто выше.

Заранее благодарим за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...