Страница 1 из 1

Как сделать UPDATE с условием по нескольким таблицам

Добавлено: 13 май 2005, 15:08
scanner
Нужно выполнить в SQL запросе что-то вроде

update from SPSTEP, STEPDOC, BASEDOC where (SPSTEP.CSTEPDOC = STEPDOC.NREC) and
(STEPDOC.CBASEDOC = BASEDOC.NREC) and
(BASEDOC.DIRECT = 1) and
(SPSTEP.PRMC = 2) and
((SPSTEP.CMCUSL = 400195FCC06367B7h) or
(SPSTEP.CMCUSL = 0000000000000027h) or
(SPSTEP.CMCUSL = 4001BDDBF47D32D8h)) and (BASEDOC.DFORM >= '01/03/2005')
set SPSTEP.WMCPROP := 1;

сделано по аналогии с SELECT, но суппорт на такую формулировку ругается.

Добавлено: 13 май 2005, 15:15
DarkAngel27
Попробуй следующую конструкцию:
update
katsopr
where
((...
))
set katsopr.csopr := comp(0)
;
Нужно указать таблицу какую update'ишь....

Добавлено: 13 май 2005, 15:34
oiko
Так пробовали
update SPSTEP where (SPSTEP.CSTEPDOC = STEPDOC.NREC) and
(STEPDOC.CBASEDOC = BASEDOC.NREC) and
(BASEDOC.DIRECT = 1) and
(SPSTEP.PRMC = 2) and
((SPSTEP.CMCUSL = 400195FCC06367B7h) or
(SPSTEP.CMCUSL = 0000000000000027h) or
(SPSTEP.CMCUSL = 4001BDDBF47D32D8h)) and (BASEDOC.DFORM >= '01/03/2005')
set WMCPROP := 1;

Добавлено: 13 май 2005, 20:28
Sheinina
oiko писал(а): update SPSTEP where (SPSTEP.CSTEPDOC = STEPDOC.NREC) and
(STEPDOC.CBASEDOC = BASEDOC.NREC) and
(BASEDOC.DIRECT = 1) and
(SPSTEP.PRMC = 2) and
((SPSTEP.CMCUSL = 400195FCC06367B7h) or
(SPSTEP.CMCUSL = 0000000000000027h) or
(SPSTEP.CMCUSL = 4001BDDBF47D32D8h)) and (BASEDOC.DFORM >= '01/03/2005')
set WMCPROP := 1;
попробуйте:
update SPSTEP where
((
SPSTEP.CSTEPDOC == STEPDOC.NREC and
STEPDOC.CBASEDOC == BASEDOC.NREC
))
and
(BASEDOC.DIRECT = 1) and
(BASEDOC.DFORM >= '01/03/2005') and
(SPSTEP.PRMC = 2) and
(
(SPSTEP.CMCUSL = 400195FCC06367B7h) or
(SPSTEP.CMCUSL = 0000000000000027h) or
(SPSTEP.CMCUSL = 4001BDDBF47D32D8h)
)
set spstep.WMCPROP := 1;
Не сильно изменила, но все же...

Добавлено: 14 май 2005, 06:15
scanner
Sheinina спасибо по вашему совету все работает. Главное что без двойных скобок не применяется.