
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;