web-dev-qa-db-fra.com

Comment faire 3 table JOIN dans la requête UPDATE?

J'ai posé une question et obtenu cette réponse qui a aidé.

   UPDATE TABLE_A a JOIN TABLE_B b 
   ON a.join_col = b.join_col AND a.column_a = b.column_b 
   SET a.column_c = a.column_c + 1

Maintenant, je cherche à faire cela s'il y a 3 tables impliquées quelque chose comme ça.

    UPDATE tableC c JOIN tableB b JOIN tableA a

ma question est fondamentalement… est-ce possible de faire la table 3 se joignent sur une instruction UPDATE? et quelle est la syntaxe correcte pour cela? Je vous remercie. Est-ce que je fais le ...

 JOIN tableB, tableA
 JOIN tableB JOIN tableA
445
Ricky

la réponse est yes vous pouvez

essayez comme ça

UPDATE TABLE_A a 
    JOIN TABLE_B b ON a.join_col = b.join_col AND a.column_a = b.column_b 
    JOIN TABLE_C c ON [condition]
SET a.column_c = a.column_c + 1

MODIFIER:

Pour rejoindre la mise à jour générale:

   UPDATE TABLEA a 
   JOIN TABLEB b ON a.join_colA = b.join_colB  
   SET a.columnToUpdate = [something]
773
echo_Me

Une autre façon de obtenir le même résultat n’est pas du tout utiliser le mot clé JOIN.

UPDATE TABLE_A, TABLE_B
SET TABLE_A.column_c = TABLE_B.column_c + 1
WHERE TABLE_A.join_col = TABLE_B.join_col
40
Matas Vaitkevicius

Ci-dessous se trouve la requête de mise à jour qui inclut JOIN & WHERE les deux. De la même manière, nous pouvons utiliser plusieurs clauses join/where, j'espère que cela vous aidera: -

UPDATE opportunities_cstm oc JOIN opportunities o ON oc.id_c = o.id
 SET oc.forecast_stage_c = 'APX'
 WHERE o.deleted = 0
   AND o.sales_stage IN('ABC','PQR','XYZ')
7
Nitin Shukla

Un plan général alternatif, que je ne fais qu'ajouter en tant que réponse indépendante, car le "commentaire sur une réponse" ne prendra pas de nouvelles lignes sans publier l'intégralité de la modification, même si elle n'est pas encore terminée.

UPDATE table A
JOIN table B ON {join fields}
JOIN table C ON {join fields}
JOIN {as many tables as you need}
SET A.column = {expression}

Exemple:

UPDATE person P
JOIN address A ON P.home_address_id = A.id
JOIN city C ON A.city_id = C.id
SET P.home_Zip = C.zipcode;
2
UncaAlby

Pour exemple PostgreSQL:

UPDATE TableA AS a
SET param_from_table_a=FALSE -- param FROM TableA
FROM TableB AS b
WHERE b.id=a.param_id AND a.amount <> 0; 
0
Oleg Potemkin