MySQL – Update avec jointure
Dans ce tutoriel nous allons découvrir comment exécuter la requête UPDATE avec une jointure, et comment utiliser les clauses INNER JOIN et LEFT JOIN avec l’instruction UPDATE.
Syntaxe de UPDATE JOIN
UPDATE table1, table2, [INNER JOIN | LEFT JOIN] table1 ON table1.colonne1 = table2.colonne1 SET table1.colonne2 = table2.colonne2, table2.colonne3 = expression WHERE condition
- Commencez par spécifier la table principale (table1) et la table à laquelle vous souhaitez que la table principale se joigne (table2).
- Ensuite, spécifiez le type de jointure que vous souhaitez utiliser, à savoir INNER JOIN ou LEFT JOIN.
- Ensuite, assignez des valeurs aux colonnes des tables que vous souhaitez mettre à jour.
- Ensuite, spécifiez une condition dans la clause WHERE pour limiter les lignes à mettre à jour.
Il y a un autre moyen de mettre à jour les tables avec jointure à l’aide de la syntaxe suivante:
UPDATE table1, table2 SET table1.colonne2 = table2.colonne2, table2.colonne3 = expression WHERE table1.colonne1 = table2.colonne1 AND condition
Exemple:
Nous allons utiliser une simple base de données qui est constitué de deux tables:
- La table des clients stocke les données sur les clients avec l’identifiant, le nom, l’age et l’adresse du client.
- La table des commandes stocke les commandes effectués par des clients.
Table « Clients »
Table « Commandes »
Supposons que vous souhaitiez ajuster la note des commandes en fonction du numéro de commande, l’adresse et le nom du client.
Le lien entre la table « Clients » et la table « Commandes » est le champ « ClientID ». Voir la requête suivante:
UPDATE Commandes INNER JOIN Clients ON Commandes.ClientID = Clients.ClientID SET Note = CONCAT( NumCommande, Nom, Adresse );
Comment fonctionne cette requête
Nous spécifions uniquement la table « Commandes » après la clause UPDATE car nous souhaitons mettre à jour que les données de la table « Commandes ».
Pour chaque ligne de la table « Commandes », la requête compare la valeur de la colonne « ClientID » à celle de la colonne « ClientID » de la table « Clients ». S’il trouve une correspondance, il récupère le nom et l’adresse depuis la table des clients, puis la concatène avec le numéro de commande et met à jour la colonne « Note » dans la table des commandes.
Comme nous négligeons la clause WHERE dans l’instruction UPDATE, tous les enregistrements de la table « Commandes » sont mis à jour.
Pas terrible ta requête j’ai fait la même chose et j’ai l’erreur:
Erreur SQL(1066): Not unique table/alias: ‘table1’