SQL Server: вставьте значения в одну таблицу на основе данных двух таблиц - PullRequest
1 голос
/ 17 октября 2011

У меня есть две таблицы с одинаковыми именами в двух разных базах данных. TableA в DatabaseA содержит столбец ServerName, а другой TableA в DatabaseB содержит столбец ServerId. У меня есть третья таблица TableB в DatabaseB, которая содержит ServerId и ServerName, и я хочу сопоставить ServerName в DatabaseA и ServerId в DatabaseB с DatabaseB х TableA.

Например ...

В DatabaseA:

TableA:

ServerName
  MyServer
  HisServer
  HerServer

В DatabaseB:

TableB

ServerId | ServerName
1          MyServer
2          HisServer
3          HerServer

Я хочу сопоставить ServerNames с ServerIds и вставить идентификаторы в таблицу DatabaseB .

Заранее спасибо.

1 Ответ

0 голосов
/ 17 октября 2011

Вот полный сценарий.

USE master;
IF EXISTS (SELECT * FROM sys.databases WHERE name = N'DatabaseA')
    DROP DATABASE DatabaseA;
IF EXISTS (SELECT * FROM sys.databases WHERE name = N'DatabaseB')
    DROP DATABASE DatabaseB;
CREATE DATABASE DatabaseA;
CREATE DATABASE DatabaseB;
GO
USE DatabaseA;
GO
CREATE TABLE dbo.TableA (
    ServerName  sysname     NOT NULL
);
INSERT INTO dbo.TableA VALUES (N'MyServer');
INSERT INTO dbo.TableA VALUES (N'HisServer');
INSERT INTO dbo.TableA VALUES (N'HerServer');
SELECT * FROM dbo.TableA;
GO
USE DatabaseB;
GO
CREATE TABLE dbo.TableA (
    ServerID    smallint    NOT NULL
);

CREATE TABLE dbo.TableB (
    ServerID    smallint    NOT NULL,
    ServerName  sysname     NOT NULL
);
INSERT INTO dbo.TableB VALUES (1, N'MyServer');
INSERT INTO dbo.TableB VALUES (2, N'HisServer');
INSERT INTO dbo.TableB VALUES (3, N'HerServer');
SELECT * FROM dbo.TableB;

-- "I want to map the ServerNames to the ServerIds and insert the Ids into DatabaseB's TableA."

INSERT INTO dbo.TableA (
    ServerID
)
SELECT bb.ServerID
FROM DatabaseA.dbo.TableA   AS aa
JOIN DatabaseB.dbo.TableB   AS bb
  ON aa.ServerName = bb.ServerName;

SELECT * FROM dbo.TableA;

И вывод:

ServerName
-------------
MyServer
HisServer
HerServer

ServerID ServerName
-------- -------------------
       1 MyServer
       2 HisServer
       3 HerServer

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