我需要创建这个查询的两个表,我不确定如何连接这两个表以便更新。
我有一个ITEM和CONSUMER_ITEMS表。 ITEM表具有针对每个项目和UPC代码的不同代码。我需要将一个字符串与ITEM.UPC_CODE连接到CONSUMER_ITEMS.NEW_ITEM_CODE,其中CONSUMER_ITEMS.ITEM_CODE =(ITEM.ITEM_CODES的特定列表)
我如何更新CONSUMER_ITEMS.NEW_ITEM_CODE字段?
它基本上等于'string'|| ITEM.UPC但是如何引用CONSUMER_ITEMS.ITEM_CODE等于要更新的ITEM_CODES列表中的特定ITEM_CODE。
答案 0 :(得分:9)
听起来像你想要的那样:
UPDATE consumer_items ci
SET new_item_code = (SELECT 'string' || item.upc_code
FROM item
WHERE item.item_code = ci.item_code
)
WHERE ci.item_code IN ('a','b','c');
或者,假设表之间存在外键关系并且consumer_items具有主键,则应该可以:
UPDATE (SELECT ci.id, ci.new_item_code, item.upc_code
FROM consumer_items ci
JOIN item ON item.item_code = ci.item_code
WHERE ci.item_code IN ('a','b','c')
) v
SET v.new_item_code = 'string' || v.upc_code
编辑:添加了WHERE子句
答案 1 :(得分:0)
是的,看起来很棒但是item.item_code = ci.item_code不起作用,因为:
SELECT distinct i.code, i.upc
FROM item i, consumer_items ci
WHERE i.ccode = '123132'
AND i.scode = 'ACTIVE'
AND i.upc IS NOT NULL
AND ci.item_code = i.code
AND i.code IN
(SELECT DISTINCT tr.item_code
FROM t_r tr
WHERE tr.category = 'RRE')
AND ci.NEW_ITEM_CODE IS NULL
这是与那些用于更新CONSUMER_ITEMS的代码相关联的CODES和UPC的独特列表。
new_item_code = (SELECT 'string' || item.upc_code FROM item WHERE item.item_code = (SELECT distinct i.code, i.upc
FROM item i, consumer_items ci
WHERE i.ccode = '123132'
AND i.scode = 'ACTIVE'
AND i.upc IS NOT NULL
AND ci.item_code = i.code
AND i.code IN
(SELECT DISTINCT tr.item_code
FROM t_r tr
WHERE tr.category = 'RRE')
AND ci.NEW_ITEM_CODE IS NULL));
似乎不起作用
答案 2 :(得分:0)
i.ITEM_CODE,i.UPC的列表如下:
014940 070182132137
018266 929245021085
018268 729245021108
018418 029245022815
018419 129245022822
018420 229245022839
018421 529245022846
018422 929245022853
第一栏是ITEM CODES,第二栏是UPC。这是在ITEMS表上。
CONSUMER_ITEMS表本质上也有一个CONSUMER_ITEMS.ITEM_CODE。这是LINK,但它也有一个名为CONSUMER_ITEMS.NEW_ITEM_CODE的字段。我们希望用上面列表中相应的ITEM_CODE用UPC填充NEW_ITEM_CODE,并连接'string'||上面的UPC代码。
我们如何生成该列表:
SELECT distinct i.code, i.upc
FROM item i, consumer_items ci
WHERE i.ccode = '123434'
AND i.scode = 'ACTIVE'
AND i.upc IS NOT NULL
AND ci.item_code = i.code
AND i.code IN
(SELECT DISTINCT tr.item_code
FROM tr_table tr
WHERE tr.category = 'RRE')
AND ci.NEW_ITEM_CODE IS NULL
这将生成上面的ITEM_CODE,UPC列表。我需要更新上面那些代码匹配的CONSUMER_ITEMS。具体来说,我需要更新他们的NEW_ITEM_CODE字段,这些字段为空,并且相应的UPC与STRING连接。
答案 3 :(得分:-3)
/ * + BYPASS_UJVC * /
如果您收到以下oracle错误,请使用此提示 - ORA-01779:无法修改映射到非密钥保留表的列