Обновление значения в таблице в Oracle на основе значений другой таблицы - PullRequest
0 голосов
/ 28 июня 2018

У меня есть две таблицы, и я хочу обновить столбец в первой таблице (invn_sbs) на основе результатов из другой таблицы (invn_sbs_qty).

Таблицы и столбцы показаны ниже

Таблица: invn_sbs

item_sid  sbs_no  active
--------  ------  ------
   12345       6       0
   23456       6       0

Таблица: invn_sbs_qty

item sid  sbs_no  store_no  qty 
--------  ------  --------  ---
   12345       6         1    5
   23456       6         10

Чего я хочу добиться, это обновить active = 1 в invn_sbs таблице только если qty <> 0 и sbs_no = 6 и store_no = 1 в таблице invn_sbs_qty.

Поэтому после запуска обновления только элемент 12345 будет active = 1.

1 Ответ

0 голосов
/ 28 июня 2018

Используйте следующее:

ITEM_SID    SBS_NO  ACTIVE
--------    ------  ------
  12345        6      0
  23456        6      0

update invn_sbs s
   set active = ( select sign(count(1))
                    from invn_sbs_qty q
                   where q.item_sid = s.item_sid
                     and qty <> 0 
                     and sbs_no = 6 
                     and store_no = 1);

-- results will become :
select * from invn_sbs;
ITEM_SID    SBS_NO  ACTIVE
--------    ------  ------
  12345        6      1
  23456        6      0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...