Обновление Oracle на основе запроса - PullRequest
0 голосов
/ 28 июля 2011

У меня есть следующие таблицы: rashodz, naklrashodz, transport, trans_task_load, shipment_plan.
Мне нужно обновить tbl: rashodz.id_ship с помощью tbl: shipment_plan.id_ship следующим образом

rashodz.id2 = shipment_plan.id2
and rashodz.nsthet = naklrashodz.nsthet  
and naklrashodz.nsthet = trans_task_load.nsthet    
and shipment_plan.idts = trans_task_load.idts  

Просто не представляю, как это сделать.
При рассмотрении двух таблиц проблем не возникает, но как это сделать, если задействованы несколько таблиц? Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 28 июля 2011

Является ли фрагмент кода, который вы даете условием для обновления?

Тогда как насчет:

update rashodz r
set id_ship = nvl(
                   (select id_ship
                   from shipment_plan, 
                        naklrashodz, 
                        transport, 
                        trans_task_load
                   where r.id2 = shipment_plan.id2
                       and r.nsthet = naklrashod.nsthet  
                       and naklrashod.nsthet = trans_task_load.nsthet    
                       and shipment_plan.idts = trans_task_load.idts
                   ), id_ship)

Целью NVL в этом случае является то, что при отсутствии совпадений id_ship остается неизменным по сравнению с его первоначальным значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...