Je wilt geen fylker
in de UPDATE
uitspraak. Je zou ook een goede join
moeten gebruiken . Dus de eerste herschrijving is:
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
);
Als we uitgaan van een enkele overeenkomst in fylker
, dan is dit goed. Als er meerdere overeenkomsten zijn, moet u er een kiezen. Een eenvoudige methode is:
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
);
Opmerking:hiermee worden alle bedrijven bijgewerkt die een overeenkomende "kommuner" hebben. Als er geen overeenkomende "fylker" is, wordt de waarde ingesteld op NULL
. Ik denk dat dit de bedoeling van uw vraag is.
Tabelaliassen maken de query ook gemakkelijker om te schrijven en te lezen.