Как объединить два запроса в один в Oracle SQL - PullRequest
0 голосов
/ 15 ноября 2018

У нас есть ошибка в работе, к счастью, есть ручное решение для этого, однако мне приходится выполнять ниже двух запросов каждое утро, чтобы исправить ошибку.Это так вручную, я хочу автоматизировать это и объединить два запроса в один.Однако эта ошибка возникает только в производстве, а не в DEV или QA, если я испорчу комбинирующий запрос, который приведет к хаосу, поэтому мне нужен ваш опыт.

1-й запрос приносит номера проекта

select id,  ugenProjectNumber
from unifier_uxpecai
where (pecaiChecklistNumber = 0 or pecaiChecklistNumber is null)
or (pecaiChecklistItemNumber = 0 or pecaiChecklistItemNumber is null)

2-й запрос исправляет неработающие ссылки между элементами действия и элементами списка, я вручную помещаю уникальные номера проекта результатов 1-го запроса во второй запрос и запускаю второй запрос в соответствии скаждый уникальный номер проекта.

update unifier_uxpecai pai
set (pai.pecaiChecklistNumber, pai.pecaiChecklistItemNumber) =
(
   select pcl.id, pcli.id
   from unifier_uxpecl pcl
   inner join unifier_uxpecl_lineitem pcli on pcli.uuu_tab_id = 0 and 
   pcli.record_id = pcl.id
   where pcl.ugenProjectNumber = 'GL-16-161010-143502'
   and pcli.pecItemActionItemBPC = pai.id
)
where exists
(
   select pcli.pecItemActionItemBPC
   from unifier_uxpecl pcl
   inner join unifier_uxpecl_lineitem pcli on pcli.uuu_tab_id = 0 and 
   pcli.record_id = pcl.id
   where pcl.ugenProjectNumber = 'GL-16-161010-143502'
   and pcli.pecItemActionItemBPC = pai.id
)
and (pai.pecaiChecklistNumber = 0 or pai.pecaiChecklistItemNumber = 0)

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете включить логику в запросы:

update unifier_uxpecai pai
set (pai.pecaiChecklistNumber, pai.pecaiChecklistItemNumber) =
(select pcl.id, pcli.id
 from unifier_uxpecl pcl join
      unifier_uxpecl_lineitem pcli
      on pcli.uuu_tab_id = 0 and pcli.record_id = pcl.id
 where pcl.ugenProjectNumber in (select ugenProjectNumber
                                 from unifier_uxpecai
                                 where (pecaiChecklistNumber = 0 or pecaiChecklistNumber is null) or
                                       (pecaiChecklistItemNumber = 0 or pecaiChecklistItemNumber is null
                                ) and
       pcli.pecItemActionItemBPC = pai.id
)
where exists
(
   select pcli.pecItemActionItemBPC
   from unifier_uxpecl pcl join
        unifier_uxpecl_lineitem pcli
        on pcli.uuu_tab_id = 0 and 
           pcli.record_id = pcl.id
   where pcl.ugenProjectNumber in (select ugenProjectNumber
                                   from unifier_uxpecai
                                   where (pecaiChecklistNumber = 0 or pecaiChecklistNumber is null) or
                                         (pecaiChecklistItemNumber = 0 or pecaiChecklistItemNumber is null
                                  ) and
        pcli.pecItemActionItemBPC = pai.id
) and
(pai.pecaiChecklistNumber = 0 or pai.pecaiChecklistItemNumber = 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...