UPDATE Sql PostgreSql avec jointure

update join sql

Le cas le plus simple : jointure unique

Comme chacun sait dans un soucis de recherche de performances il est toujours préférable de faire travailler au maximum le serveur de bases de données plutôt que le serveur WEB pour les opération d'update de tables.

Dans, cette optique il souvent très intéressant de pouvoir effectuer des updates entre 2 tables basée sur une jointure SQL.

La requête d’exemple ci dessous présente cette technique appliquée à une base de données PostgreSQL :

UPDATE table_a_updater AS tau
SET    flag_herite_flag_statut = taj.flag_herite_flag_statut, flag_statut=taj.flag_statut
FROM   table_a_joindre AS taj 
WHERE tau.id_produit = taj.id_produit 
AND taj.id_boutique=2001
AND tau.id_boutique=4001;

Requête SQL avec jointures multiples

Il est d'ailleurs possible d'étendre le logique à des jointures multiples.

Dans l'exemple ci dessous nous souhaitons mettre à jour la table t_facture qui contient une colonne id_boutique

Ce champs id_boutique fait référence à une colonne de la table tl_adresse_boutique

Cette dernière table contient une colonne id_adresse qui fait référence à une colonne de la table t_adresse (qui contient les données qu'on souhaite mettre à jour dans t_facture)

La requête SQL donnerait alors :

UPDATE t_facture AS tau 
SET boutique_adresse_ligne_1 = taj2.ligne_1, 
boutique_adresse_ligne_2 = taj2.ligne_2 
FROM tl_adresse_boutique AS taj1 
JOIN t_adresse AS taj2 ON taj2.id = taj1.id_adresse 
WHERE taj1.id_boutique = tau.id_boutique;
Par Christophe HIRON
28 février 2018