5


1

このクエリには2つのテーブルがあり、作成する必要がありますが、更新するためにこれら2つのテーブルを結合する方法が正確にわかりません。

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しかしどのように私は更新されるITEM_CODESのリストの特定のITEM_CODEと等しくなるためにCONSUMER_ITEMS.ITEM_CODEを参照するのですか?

4 Answer


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 item ON item.item_code = ci.item_codeどこci.item_code IN( 'a'、 'b'、 'c'))v SET v。 new_item_code = 'string' || v.upc_code

編集:WHERE句を追加しました。


0


そう、それは素晴らしく見えますが、item.item_code = ci.item_codeは機能しません。

異なるi.code、i.upcを項目i、consumer_items ciから選択します。i.ccode = '123132' AND i.scode = 'ACTIVE' AND i.upcはNULLではありません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がNULL

これは、CONSUMER_ITEMSを更新するためによく使用されるコードに関連付けられたCODESとUPCの明確なリストです。

new_item_code =(SELECT '文字列' || item.upc_code FROM項目WHERE item.item_code =(SELECT個別i.code、i.upc項目i、consumer_items ci WHERE i.ccode = '123132' AND i.scode = 'ACTIVE 'AND i.upcがNULLでなく、ci.item_code = i.code AND i.code IN(SELECT DISTINCT tr.item_code FROM t_r tr WHERE tr.category =' RRE ')およびci.NEW_ITEM_CODEがNULLです);

うまくいかないようです


0


i.ITEM_CODE、i.UPCのリストはこれです。

014940 070182132137 018266 929245021085 018268 729245021108 018418 029245022815 018419 229245022839 018421 529245022846 018422 929245022853

最初の列は項目コード、2番目の列はUPCです。 これはITEMS表にあります。

CONSUMER_ITEMSテーブルには、基本的にCONSUMER_ITEMS.ITEM_CODEもあります。 それがLINKですが、CONSUMER_ITEMS.NEW_ITEM_CODEというフィールドもあります。 上記のリスト内の対応するITEM_CODEのUPCをNEW_ITEM_CODEに 'string' ||の連結で埋めます。上からのUPCコード。

そのリストを生成する方法は次のとおりです。

異なるi.code、i.upcを項目i、consumer_items ciから選択します。i.ccode = '123434' AND i.scode = 'ACTIVE' AND i.upcがNULLではありません。 IN(SELECT DISTINCT tr.item_code FROM tr_table tr WHERE tr.category = 'RRE')AND ci.NEW_ITEM_CODEがNULL

これにより、上記のITEM_CODE、UPCリストが生成されます。 上記のコードと一致するCONSUMER_ITEMSを更新する必要があります。 具体的には、対応するUPCをSTRINGと連結して、それらのNEW_ITEM_CODEフィールドをnullに更新する必要があります。


-3


/ * BYPASS_UJVC * /

次のOracleエラーが発生した場合は、このヒントを使用してください。ORA-01779:キー保存されていない表にマップされている列は変更できません。