Проблема с написанием запроса обновления :(
Valdo
Дата: 08.10.2003 12:31:28
Упрощенная ситуация:
Есть две таблицы A(ID pk, P1, P2, P3) и B(ID pk, P1, P2, P3).
Таблица B более свежая (больше записей) чем A.
Помогите, плз, с запросом на обновление таблицы A со следующей проверкой:
если (B.P1 = A.P1) и (B.P2 = A.P2) и (B.P3 <> A.P3) то проапдейдить такую запись в A, иначе добавить такую запись в A. При этом ID у соответствующих записей в этих таблицах могут быть различны, то есть таблица B - не есть постоянно добавляющаяся A.
tpg
Дата: 08.10.2003 12:35:05
то проапдейдить такую запись в A, иначе добавить такую запись в A.
Только через 2 запроса, один на обновление, другой на добавление.
tpg
Дата: 08.10.2003 12:37:04
Прадон, если полей в таблицах только 4 и ID поля не учавствуют в условии и не обновляются, то достаточно будет только добавления.
Valdo
Дата: 08.10.2003 12:44:15
Уточню условие...
если (B.P1 = A.P1) и (B.P2 = A.P2) и (B.P3 <> A.P3) то проапдейдить такую запись в A по полю P3, иначе добавить полностью такую запись в A.
Полей ес-но больше чем 4, но их кол-во одинаково в таблицах. ID в условии не участвует, но запись с ID=300 в таблице B может оказаться записью с ID=700 в таблице A.
Glory
Дата: 08.10.2003 12:47:15
то проапдейдить такую запись в A по полю P3, иначе добавить полностью такую запись в A.
Два запроса - сначала UPDATE потом INSERT.
tpg
Дата: 08.10.2003 12:49:29
???
update A set P3=B.P3
from A join
B on (B.P1 = A.P1) and (B.P2 = A.P2)
where (B.P3 <> A.P3)
insert into A (P1, P2, P3)
select P1, P2, P3
from B
where not exists(select * from A where (B.P1 = A.P1) and (B.P2 = A.P2)) |
|
Valdo
Дата: 08.10.2003 15:00:47
tpg, Спасибо!
Хороший Вы Человек!!!