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

Нужен апдейт поля

Добавлено: 09 фев 2018, 19:59
igova
Добрый день.

Просьба помочь с апдейтом.

Re: Нужен Update поля в KATOS

Добавлено: 12 фев 2018, 12:24
igova
В саппорте не отрабатывает запрос:

Update KATOS
set KatOs.cInSpOrder = SPORDER.nrec
from katos, sporder, katsopr, sklorder
where KATOS.nrec = SPORDER.CSPORDER AND KATSOPR.nrec = SKLORDER.csopr AND SKLORDER.nrec = SPORDER.CSKLORDER AND KatOs.innum = KATSOPR.NAME AND KATSOPR.VIDSOPR = '101';

Что не так?

Re: Нужен Update поля в KATOS

Добавлено: 12 фев 2018, 14:23
Den
если платформа не первасив, то можно через прямой скуль( контструкция sql update) попробовать тоже самое.
Ну может еще в set двоеточие добавить перед =

Re: Нужен Update поля в KATOS

Добавлено: 14 фев 2018, 20:42
igova
Нашел ошибку - одна связь была с пустым полем - удалил.
Все отработало.
Update KATOS
where KatOs.innum = KATSOPR.NAME AND KATSOPR.nrec = SKLORDER.csopr AND SKLORDER.nrec = SPORDER.CSKLORDER
set KatOs.cInSpOrder := SPORDER.nrec;

Обновляет только одну запись в таблице.

Как правильно зациклить?

Re: Нужен Update поля в KATOS

Добавлено: 15 фев 2018, 11:04
m0p3e
Есть старый проверенный способ.

Код: Выделить всё

select ('update katos where nrec='+katos.nrec+' set katos.cInSpOrder:='+Sporder.nrec+';') from KATOS,SpOrder
where KatOs.innum = KATSOPR.NAME AND KATSOPR.nrec = SKLORDER.csopr AND SKLORDER.nrec = SPORDER.CSKLORDER
set KatOs.cInSpOrder := SPORDER.nrec to txt c:\UpdateKatos.lot;
Не проверял. Запрос приведен только для передачи сути идеи.

Re: Нужен Update поля в KATOS

Добавлено: 15 фев 2018, 19:52
igova
m0p3e писал(а):Есть старый проверенный способ.

Код: Выделить всё

select ('update katos where nrec='+katos.nrec+' set katos.cInSpOrder:='+Sporder.nrec+';') from KATOS,SpOrder
where KatOs.innum = KATSOPR.NAME AND KATSOPR.nrec = SKLORDER.csopr AND SKLORDER.nrec = SPORDER.CSKLORDER
set KatOs.cInSpOrder := SPORDER.nrec to txt c:\UpdateKatos.lot;
Не проверял. Запрос приведен только для передачи сути идеи.

Re: Нужен Update поля в KATOS

Добавлено: 16 фев 2018, 01:53
Den
Проблема в способе указаний связей между таблами

Код: Выделить всё


select ('update katos where nrec='+katos.nrec+' set katos.cInSpOrder:='+Sporder.nrec+';')
  from KATOS,SpOrder,Sklorder,Katsopr
 where ((
             KATOS.CINSPORDER ==  SPORDER.nrec
        and SPORDER.CSKLORDER ==  SKLORDER.nrec
        and  SKLORDER.csopr    ==  katsopr.nrec
       ))
    and katsopr.name = katos.innum
     to txt c:\UpdateKatos.lot
  ;



Re: Нужен Update поля в KATOS

Добавлено: 16 фев 2018, 10:44
m0p3e
set забыл убрать.
В результате выполнения получаем готовый лот с построчным обновлением.

Re: Нужен Update поля в KATOS

Добавлено: 16 фев 2018, 11:18
igova
Ничего не выгружается - файл пустой.
В базе katos.cInSpOrder тоже пустой

Re: Нужен Update поля в KATOS

Добавлено: 16 фев 2018, 11:21
igova
Set убирал. Очень долго 'висит' запрос. Не выполняется.

Re: Нужен Update поля в KATOS

Добавлено: 16 фев 2018, 11:54
m0p3e
Значит запрос изначально неправильный.
Отлаживайте.

Re: Нужен апдейт поля

Добавлено: 16 фев 2018, 12:06
igova
Хм... Но одну запись то обновляет, если убрать select.

Re: Нужен Update поля в KATOS

Добавлено: 16 фев 2018, 12:09
Den
В ночи кнч не то написал.
KATOS.CINSPORDER == SPORDER.nrec не то конечно.

непонятно все же связь по KATOS.nrec = SPORDER.CSPORDER имеет место быть или нет . Если да, то заменить нужно на это
или только критерий связи неявный katsopr.name = katos.innum ?

И не ответили, как платформа у Вас

Re: Нужен Update поля в KATOS

Добавлено: 16 фев 2018, 12:16
igova
Критерий связи не явный katsopr.name = katos.innum . Платформа оракл. Но выполнить нужно через саппорт.

Re: Нужен Update поля в KATOS

Добавлено: 16 фев 2018, 12:23
Den
а у Вас всегда что ли в накладных таких одна спецификация ?
просто если не одна, то будет множественная связь и фигня тут будет KatOs.cInSpOrder := SPORDER.nrec