2017-10-07 6 views
1

私は2つのテーブルは私をしかし、その投げエラーをfooditemと.I iはSQL oracleでUPDATEとJOINを使用するにはどうすればよいですか?

このような値を更新しようとして
SELECT food_serve.food_serve_cost 
FROM fooditem INNER JOIN food_serve 
ON fooditem.food_item_no= food_serve.food_item_no and fooditem.food_type = 'M'and food_serve.food_serve_size = 'ST'; 

しかし、イムに変更したいデータを閲覧することができますfood_serveいる

update q 
set q.food_serve_cost = q.food_serve_cost *1.15 
from food_serve q 
inner join fooditem a 
on q.food_item_no = a.food_item_no 
where a.food_type = 'M' AND q.FOOD_SERVE_SIZE = 'ST'; 

後研究私は傾きからの更新で使用することがわかりましたが、私はこのための修正を見つけることができません 助けてください?イム

+0

これは役立つかもしれませんhttps://stackoverflow.com/questions/2446764/update-statement-with-inner- join-on-oracle –

+0

ここでさらに重複するもの:https://stackoverflow.com/search?q=%5Boracle%5D+update+with+join –

答えて

0
update food_serve q 
inner join fooditem a 
on q.food_item_no = a.food_item_no 
set q.food_serve_cost = q.food_serve_cost *1.15 
where a.food_type = 'M' AND q.FOOD_SERVE_SIZE = 'ST'; 
0

UPDATE ... FROM ...構文はPostgreSQL Updateから来ているのOracle SQL Developerを使用しました。
これは独自の構文であり、他のRDBMSシステムでは機能しません。


使用このクエリ

update q 
set q.food_serve_cost = q.food_serve_cost *1.15 
WHERE EXISTS (
    SELECT null FROM fooditem a 
    WHERE q.food_item_no = a.food_item_no 
    AND a.food_type = 'M' 
) 
AND q.FOOD_SERVE_SIZE = 'ST' 

か、それは変化だ:

update q 
set q.food_serve_cost = q.food_serve_cost *1.15 
WHERE food_item_no IN (
     SELECT food_item_no FROM fooditem 
     WHERE food_type = 'M' 
    ) 
AND FOOD_SERVE_SIZE = 'ST' 
関連する問題