[ОТВЕТИТЬ]
Опции темы
13.04.2012 13:38  
Starter
есть таблица SMFINOBLIGATION,
поля: DO DOCID CLIENTINDEX OURSELFCLIENT ACCEPTSUM BASESUM BEGINDATE CALCENDDA PAYMENTDELAY I FINEPERCENT FINELIMIT PAYMENTPRTY I BORNIN COMMENTARY

таблица SMDocuments
с интересующими нас полями ID и USEROP

Можно как нибудь сделать сложный Update таблицы SMFINOBLIGATION, который бы сравнивал SMDocuments.ID=SMFINOBLIGATION.DOCID и SMDocuments.USEROP=21

т.е. Update SMFinObligation set AcceptSum=0 where …….;
вот что писать в Where ? в первой таблице есть DOCID, во второй - ID=DOCID первой и поле USEROP, по которому нужно проверку делать.
 
13.04.2012 13:48  
Mtirt
Приходные накладные?

Код:
update SMFINOBLIGATION set AcceptSum=0 where (doctype, docid) =
(select doctype, docid from SMDocuments where doctype="WI" and USEROP=21)
 
"Спасибо" Mtirt от:
13.04.2012 14:36  
Starter
Немного другой запрос (оригинальный не работает, точнее отбирает все накладные, без фильтра по коду операции):

update SMFINOBLIGATION set ACCEPTSUM = 0 where (docid in (select id from SMDocuments where doctype='WI' and SMDocuments.USEROP in (21,25,26,27,30,31))) AND (SMFINOBLIGATION.BEGINDATE =TO_DATE('02.04.12','DD.MM.RR'));

Дату можно убрать, это для проверки, и список операции из списка.
 
13.04.2012 14:44  
Mtirt
А где в условиях была OPCODE?
Была только USEROP...
В принципе, в условия вложенного запроса ты можешь добавлять любые реквизиты таблицы SMDocuments.
С любыми условиями.
 
13.04.2012 14:46  
Mtirt
Чуть-чуть поменяла запрос. (Вместо in поставила знак равенства).
Так работает?
 
13.04.2012 15:03  
Starter
про OPCODE опечатался, имелось в виду USEROP
со знаком равенства не работает, ORA-01427: single-row subquery returns more than one row.
Ну и в SMDocuments поле не DOCID а просто ID, работать будет where (doctype, docid) in (select doctype, id from SMDocuments where doctype='WI' and USEROP=21)
 
13.04.2012 15:36  
Mtirt
Ну да, я писала запрос прямо в браузере :)
Точно работает?
 
13.04.2012 16:10  
Starter
Ага, точно работает... ну для РН понятно будет не WI а WO.
 
13.04.2012 16:19  
Mtirt
Да, именно так.
Ну, и наверное, чтобы не обновлять впустую много записей можно сделать так:
Цитата:
update SMFINOBLIGATION set AcceptSum=0 where AcceptSum!=0 and (doctype, docid) =
(select doctype, id from SMDocuments where doctype="WI" and USEROP=21)
 
 
Опции темы



Часовой пояс GMT +3, время: 03:07.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.