J'ai une base de données avec des "numéros de compte" et des "numéros de carte". Je fais correspondre ces numéros à un fichier pour mettre à jour les numéros de carte avec le numéro de compte, de façon à ne travailler qu'avec les numéros de compte.
J'ai créé une vue qui relie la table à la base de données des comptes et des cartes pour renvoyer l'ID de la table et le numéro de compte correspondant, et je dois maintenant mettre à jour les enregistrements pour lesquels l'ID correspond au numéro de compte.
Il s'agit de la table Sales_Import
, où le champ numéro de compte
doit être mis à jour :
LeadID AccountNumber
147 5807811235
150 5807811326
185 7006100100007267039
Et voici la table RetrieveAccountNumber
, à partir de laquelle je dois effectuer la mise à jour :
LeadID AccountNumber
147 7006100100007266957
150 7006100100007267039
J'ai essayé ce qui suit, mais sans succès jusqu'à présent :
UPDATE [Sales_Lead].[dbo].[Sales_Import]
SET [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber
FROM RetrieveAccountNumber
WHERE [Sales_Lead].[dbo].[Sales_Import]. LeadID =
RetrieveAccountNumber.LeadID)
Il met à jour les numéros de carte en numéros de compte, mais les numéros de compte sont remplacés par NULL
.
Je pense qu'un UPDATE FROM
avec un JOIN
sera utile :
UPDATE
Sales_Import
SET
Sales_Import.AccountNumber = RAN.AccountNumber
FROM
Sales_Import SI
INNER JOIN
RetrieveAccountNumber RAN
ON
SI.LeadID = RAN.LeadID;
UPDATE
Sales_Import SI,
RetrieveAccountNumber RAN
SET
SI.AccountNumber = RAN.AccountNumber
WHERE
SI.LeadID = RAN.LeadID;
Si vous utilisez MSSQL, alors, si je me souviens bien, cela se fait de la manière suivante :
UPDATE [Sales_Lead].[dbo].[Sales_Import] SET [AccountNumber] =
RetrieveAccountNumber.AccountNumber
FROM RetrieveAccountNumber
WHERE [Sales_Lead].[dbo].[Sales_Import].LeadID = RetrieveAccountNumber.LeadID
Merci pour les réponses. J'ai trouvé une solution.
UPDATE Sales_Import
SET AccountNumber = (SELECT RetrieveAccountNumber.AccountNumber
FROM RetrieveAccountNumber
WHERE Sales_Import.leadid =RetrieveAccountNumber.LeadID)
WHERE Sales_Import.leadid = (SELECT RetrieveAccountNumber.LeadID
FROM RetrieveAccountNumber
WHERE Sales_Import.leadid = RetrieveAccountNumber.LeadID)