2014-09-22 5 views
0

У меня есть таблица, которую я использую для хранения данных. Таблица заполняется, когда пользователь нажимает на сохранение в сетке, которая находится в моей клиентской системе. Здесь я сделал очень простой пример. Таблица называется TableA. На экране клиента показывает пять строк и поэтому, когда пользователь щелкает сохранить переводится на пять вставок:Как я могу обновить данные в базовой таблице SQL на основе данных в другой таблице?

CREATE TABLE [dbo].[TableA] 
(
    [IdA]  INT   IDENTITY (1, 1) NOT NULL, 
    [valueA] CHAR(10) NOT NULL 
) 
INSERT INTO TableA VALUES (1, 'one') 
INSERT INTO TableA VALUES (2, 'two') 
INSERT INTO TableA VALUES (3, 'three') 
INSERT INTO TableA VALUES (4, 'four') 
INSERT INTO TableA VALUES (5, 'five') 
GO 

Теперь мой пользователь на клиенте изменяет данные в сетке, и я прочитал последние данные в временную таблицу. Здесь я имитировать, что с TableB

CREATE TABLE [dbo].[TableB] 
(
    [IdB]  INT   IDENTITY (1, 1) NOT NULL, 
    [valueB] CHAR(10) NOT NULL 
) 
INSERT INTO TableB VALUES (1, 'one') 
INSERT INTO TableB VALUES (3, 'newThree') 
INSERT INTO TableB VALUES (4, 'newFour') 
INSERT INTO TableB VALUES (5, 'five') 
GO 

Может кто-то подскажет, как я могу использовать новые данные в TableB для обновления строки в TableA. В этом случае мне нужно будет удалить строку с идентификатором 2 и обновить строки с идентификаторами 4 и 5. Каждый раз, когда это может быть другим. Например, пользователь может добавлять строки, поэтому мне нужно будет добавить новую строку в таблицу. Обратите внимание, что все это происходит внутри хранимой процедуры. Я действительно нуждаюсь в некоторых советах по различным способам, с которыми я мог бы присоединиться к TableA и TableB, чтобы каким-то образом создать вставку, удалить и обновить TableA, чтобы получить ее до последнего состояния.

Примечание для этого конкретного примера, что мне нужно, чтобы в конечном итоге является:

+0

[The 'UPDATE 'часть была спрошена и ответила много, много и много раз на этом сайте] (http://stackoverflow.com/questions/1604091/update-a-table-using-join-in-sql-server/1604212#1604212) , –

ответ

1

UPDATE с JOIN:

UPDATE TableA 
SET TableA.ValueB = TableB.ValuA 
FROM TableA 
JOIN TableB 
    ON TableA.IdB = TableB.IdA 

Затем удалите лишние строки:

DELETE FROM TableA 
WHERE NOT EXISTS (SELECT 1 FROM TableB WHERE TableB.IdA = TableA.IdB) 
+0

Но мне также нужно обрабатывать случай, когда TableB имеет больше строк (insert on TableA) и где TableB имеет меньше строк (delete at TableA) –

+0

Добавлен еще один оператор для DELETE – DavidG

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