2017-10-07 3 views
1

j'ai 2 tables fooditem et food_serve .i peuvent visualiser les données que je veux changer avecComment utiliser UPDATE et JOIN dans SQL Oracle?

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'; 

Mais im essayant de mettre à jour les valeurs comme ceci cependant ses erreurs de lancement me

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'; 

après recherche, je trouve que de ne pas être utilisé dans la mise à jour, mais je ne peux pas trouver une solution pour ce Toute aide s'il vous plaît? im en utilisant développeur sql oracle

+0

Cela pourrait aider https://stackoverflow.com/questions/2446764/update-statement-with-inner- join-on-oracle –

+0

Encore plus de doublons ici: https://stackoverflow.com/search?q=%5Boracle%5D+update+with+join –

Répondre

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

syntaxe UPDATE ... FROM ... vient PostgreSQL Update.
Cette syntaxe est propriétaire et ne fonctionne pas sur les autres systèmes de SGBDR.


Utilisez cette requête

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' 

ou il est la variation:

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'