У меня есть 2 таблицы, мне нужно обновить:Как обновить несколько таблиц с одним запросом
Таблица A состоит из: ID, PERSONNAME, дата, статус
Таблица B состоит из: PersonId, дата, статус
для каждой строки в а может быть несколько строк в B с тем же PersonId
мне нужно «петля» по всем результатам из а, что статус = 2 и обновить дату и статус 1.
Кроме того, для каждой строки в A, которая имеет статус = 2, мне нужно обновить все строки в B, которые имеют один и тот же идентификатор person (то есть A.ID == B.PersonID). Мне нужно обновить дату и статус до 1 как Что ж.
Так в основном, если я должен был сделать это программно (или алгоритмически) его что-то вроде этого:
Foreach(var itemA in A)
If (itemA.status = 2)
itemA.status to 1
itemA.date = GetDate()
foreach(var itemB in B)
if(itemB.PersonID == itemA.ID && itemB.status != 2)
Change itemB.status to 1
Change itemB.date = GetDate()
я знаю, как обновить все строки в B, используя следующую инструкцию SQL:
UPDATE
B
SET
status = 1,
date = GETDATE()
FROM
B
INNER JOIN
A
ON
B.PersonID = A.ID
проблема заключается в том, что я не знаю, как и обновить таблицу А поскольку не может быть несколько таблиц в операторе обновления
спасибо за любую помощь
Y ou может обновить первую таблицу, используя предложение 'OUTPUT', чтобы фиксировать обновляемые записи. Затем используйте эту информацию для обновления второй таблицы. –
Почему бы просто не написать 2 заявления об обновлении? вы можете поместить их внутри транзакции, если вам нужны все или ничего. –