Mise à jour des tables Oracle à l'aide de jointures
L'objectif est de mettre à jour une table à l'aide d'une jointure et de rencontrer l'erreur "ORA-00933 : commande SQL pas correctement terminé."
Cela se produit car la requête fournie n'est pas syntaxiquement correcte. La logique de la requête consiste à calculer un total à partir de plusieurs tables jointes par des colonnes communes et à mettre à jour la table d'origine avec le total calculé.
Pour résoudre ce problème, nous vous recommandons d'utiliser plutôt une instruction MERGE, qui fournit une méthode plus explicite. pour mettre à jour les données en fonction des conditions. La syntaxe MERGE s'aligne plus efficacement sur les règles métier.
Voici une requête révisée utilisant l'instruction MERGE :
MERGE INTO table1 tab1 USING ( SELECT tab3.name, tab3."add", SUM(tab2.amount) AS total FROM table2 tab2, table3 tab3 , table4 tab4 WHERE tab2.id = tab3.id AND tab3.id = tab4.id AND tab4.indicator ='Y' GROUP BY tab3.name, tab3."add" ) t1 ON (tab1.id = t1.id) WHEN MATCHED THEN UPDATE SET tab1.total_adjusted_cost = tab1.total_adjusted_cost + t1.total;
Cette instruction MERGE :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!