Oracle Update Query - объединение двух таблиц - PullRequest
1 голос
/ 30 мая 2011

У меня есть две таблицы, одна родительская и одна дочерняя. У потомка будет много строк для parent_id. Обе таблицы имеют статус столбца. Возможные значения: «Активный» и «Удаленный».

Я хочу сделать это. Если для идентификатора родителя все дочерние элементы имеют статус «Удалено», необходимо пометить родителя также как «Удалено из активного состояния». Это можно сделать в одном запросе на обновление?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 30 мая 2011

Как насчет этого?

UPDATE parent_table pt SET deleted = 'Y' WHERE deleted = 'N' AND id NOT IN
    (SELECT parent_id FROM child_table ct WHERE deleted = 'N' AND ct.parent_id = pt.id)
1 голос
/ 30 мая 2011
UPDATE parent_table 
set status = 'deleted'
WHERE status = 'active'
  AND id in (
              SELECT parent_id 
              FROM (
                    SELECT 
                            parent_id
                          , count(*)                                          total
                          , sum (CASE staus WHEN 'deleted' THEN 1 ELSE 0 END) deleted
                    FROM child_table
                    group by parent_id
              )
              WHERE total = deleted
             )
1 голос
/ 30 мая 2011

Да

update parent
   set status = 'Deleted'
 where status = 'Active'
   and not exists ( select null from child
                     where child.id = parent.id
                       and child.status <> 'Deleted')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...