oracle 根据4个表中的标准更新表

tpgth1q7  于 2023-06-22  发布在  Oracle
关注(0)|答案(1)|浏览(97)

我正试图更新一个表中的一个字段,该表的定价基于4个表中的标准。我尝试将pnm.list_price乘以47%。我的选择查询可以很好地过滤记录,但现在我需要更新那些已识别的记录。

select mfg.mfg_code, pnm.pn, pnm.description, stk.unit_cost, stk.rec_date,  
    whs.warehouse_code, stk.qty_available, po.entry_date
from  parts_master pnm join manufacturer mfg on pnm.mfg_auto_key = mfg.mfg_auto_key
                   join warehouse whs on pnm.whs_auto_key = whs.whs_auto_key
                   join stock stk on pnm.pnm_auto_key = stk.pnm_auto_key
                   join po_detail po on pnm.pnm_auto_key = po.pnm_auto_key
where REGEXP_LIKE(mfg.mfg_code, '^[[:digit:]]+$')AND
              pnm.list_price < 3000.00 AND
              stk.qty_available > 0 AND
              pnm.list_price IS NOT NULL AND
              whs.warehouse_code = 'MI SKYLINE' AND
              po.entry_date = (select max(po.entry_date) 
                                  from po_detail)

谢谢你的帮助
杰夫

ukdjmx9f

ukdjmx9f1#

您希望UPDATE parts_master表,并将行限制为从SELECT语句返回的行。
像这样:

UPDATE parts_master
SET list_price = list_price * 1.47
WHERE primary_key_id IN (
    select pnm.primary_key_id
    from  parts_master pnm join manufacturer mfg on pnm.mfg_auto_key = mfg.mfg_auto_key
                       join warehouse whs on pnm.whs_auto_key = whs.whs_auto_key
                       join stock stk on pnm.pnm_auto_key = stk.pnm_auto_key
                       join po_detail po on pnm.pnm_auto_key = po.pnm_auto_key
    where REGEXP_LIKE(mfg.mfg_code, '^[[:digit:]]+$')AND
                  pnm.list_price < 3000.00 AND
                  stk.qty_available > 0 AND
                  pnm.list_price IS NOT NULL AND
                  whs.warehouse_code = 'MI SKYLINE' AND
                  po.entry_date = (select max(po.entry_date) 
                                      from po_detail)
)

相关问题