Vous ne voulez pas fylker
dans la UPDATE
déclaration. Vous devez également utiliser un join
approprié . Donc la première réécriture est :
UPDATE companies c JOIN
kommuner k
ON c.forretningsadresse_kommune = k.kommuneNavn
SET c.forretningsadresse_fylke = (SELECT f.fylkeNavn
FROM fylker f
WHERE f.fylkeID = k.fylkeID
);
Si nous supposons une seule correspondance dans fylker
, alors c'est bien. S'il y a plusieurs correspondances, vous devez en choisir une. Une méthode simple est :
UPDATE companies c JOIN
kommuner k
ON c.forretningsadresse_kommune = k.kommuneNavn
SET c.forretningsadresse_fylke = (SELECT f.fylkeNavn
FROM fylker f
WHERE f.fylkeID = k.fylkeID
LIMIT 1
);
Remarque :Cela mettra à jour toutes les entreprises qui ont un « kommuner » correspondant. S'il n'y a pas de "fylker" correspondant, la valeur sera définie sur NULL
. Je crois que c'est l'intention de votre question.
De plus, les alias de table facilitent l'écriture et la lecture de la requête.