[MySQL] Requête imbriquée
Les requêtes imbriquées vous permettent par exemple de mettre à jour les informations d’un champs d’une table en utilisant les informations provenant d’une autre table.
MySql utilise une syntaxe qui n’est pas forcément la première qui nous vient à l’esprit lorsque l’on est habitué à d’autre serveur SQL.
La méthode standard de conception d'une requête imbriquée est la syntaxe suivante :
UPDATE
table1
AS
t1
SET
t1.column1 = (
SELECT
columnA
FROM
table2
AS
t2
WHERE
t2.columnB = t1.column2)
Mais, mais mais ... MySql ne reconnait pas la cette syntaxe.
La solution est donc d'utiliser les jointures comme ceci :
UPDATE
table1
AS
t1
JOIN
table2
AS
t2
ON
t2.columnB = t1.column2
SET
t1.column1 = t2.columnA
Exemple de requête un peu plus complexe pour MySQL avec la clause WHERE, plusieurs champs à mettre à jour et une concaténation de chaîne de caractères :
UPDATE
t1
JOIN
t2
ON
t1.colJoin = t2.colJoin
SET
t1.colDest1 = t2.colSrc1, t1.colDest2 = concat(t2.colSrc2,
'...'
)
WHERE
t2.colFiltre =
'ma recherche'