2013-08-15 3 views
2

У меня есть 3 базы данных. Один из них содержит неверные данные.
структура, как:Обновить colum со значением, которое соответствует двум другим таблицам

DB_1:
Tbl:
ID - otherID - Guid

DB_2:
Tbl:
ID - otherID - Guid

DB_3:
Tbl:
ID - otherID

DB_1 Содержит «otherID», который должен храниться в DB_3.
«Руководство» DB_1 и BD_2
и «otherID» DB_2 и DB_3 соответствуют

Как обновить DB_3 «oderID» с помощью DB_1 «otherID»?

Моя первая попытка была:

SELECT A.otherID 
FROM [DB_1].dbo.tbl A, [DB_2].dbo.tbl B 
WHERE A.Guid = B.Guid; 

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

поэтому результат был похож:

UPDATE [BD_3].dbo.Tbl 
SET [BD_3].dbo.Tbl.otherID = 
    (
     SELECT A.otherID 
     FROM [DB_1].dbo.tbl A, 
      [DB_2].dbo.tbl B, 
      [DB_3].dbo.tbl C 
     WHERE C.otherID = B.oterID 
      AND A.guid = B.guid 
    ); 

Я нашел something, но это не очень помогло мне, потому что я не знаю, как использовать его для этого случая.

ответ

1

Попробуйте один -

UPDATE C 
SET otherID = A.otherID 
FROM [BD_3].dbo.Tbl C 
JOIN [DB_2].dbo.tbl B ON C.otherID = B.oterID 
JOIN [DB_1].dbo.tbl A ON A.guid = B.guid 

Обновление:

ALTER TRIGGER [dbo].[T_Akquise_ITrig] 
    ON [dbo].[Akquise] 
    FOR INSERT 
AS BEGIN 

    SET NOCOUNT ON; 

    INSERT INTO dbo.LSschalter (Art, ParentId) 
    SELECT 3, i.LfdNr 
    FROM INSERTED i 

    INSERT INTO dbo.LSlisten (Art, ParentId) 
    SELECT 3, i.LfdNr 
    FROM INSERTED i 

    IF 
    (
     SELECT COUNT(1) 
     FROM INSERTED 
    ) 
    != 
    (
     SELECT COUNT(1) 
     FROM dbo.Adressen a 
     JOIN INSERTED i ON a.AdrNr = i.AdrNr 
    ) BEGIN 

     RAISERROR('Some Message', 16, 1) 
     ROLLBACK TRANSACTION 

    END 

END 
+0

I судимым это и есть ошибка: Meldung 102, Ebene 15, состояние 1, Prozedur T_Akquise_UTrig, Zeile 21 Неправильного синтаксис около ' 44446' . Meldung 102, Ebene 15, Status 1, Prozedur T_Akquise_UTrig, Zeile 21 Неправильный синтаксис около '44446'. Любая идея, что я пропустил? – Wr4thon

+0

Запрос в порядке. Можете ли вы представить полный пример своего кода. – Devart

+0

ОБНОВЛЕНИЕ С SET ELO_Id = A.objid ОТ [Database1] .dbo.Akquise C JOIN [database2] .dbo.objekte B ON C.ELO_Id = B.objid РЕГИСТРИРУЙТЕСЬ [Database3] .dbo.objekte А на А .objguid = B.objguid – Wr4thon

Смежные вопросы