Mettre à jour la requête avec INNER JOIN entre des tables dans 2 bases de données différentes sur 1 server

Besoin d'aide pour la syntaxe SQL 🙂

Les deux bases de données sont sur le même server

db1 = DHE db2 = DHE_Import UPDATE DHE.dbo.tblAccounts INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink ON DHE.dbo.tblAccounts.AccountCode = DHE_Import.tblSalesRepsAccountsLink.AccountCode SET DHE.dbo.tblAccounts.ControllingSalesRep = DHE_Import.dbo.tblSalesRepsAccountsLink.SalesRepCode 

Je peux faire une requête dans Access avec des tables liées avec une syntaxe similaire – MAIS SQL ne l'aime pas.

Je suis sûr que c'est un problème simple 😀

Merci!

Vous pouvez l'appeler simplement style, mais je préfère l'aliasing pour améliorer la lisibilité.

 UPDATE A SET ControllingSalesRep = RA.SalesRepCode from DHE.dbo.tblAccounts A INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA ON A.AccountCode = RA.AccountCode 

Voici la syntaxe de MySQL:

 UPDATE table1 INNER JOIN table2 ON table1.field1 = table2.field2 SET table1.field3 = table2.field4 WHERE ...... ; 

http://geekswithblogs.net/faizanahmad/archive/2009/01/05/join-in-sql-update–statement.aspx

Désolé de son retard, mais je suppose que cela aiderait ceux qui atterrissent ici à find une solution à un problème similaire. La clause set devrait venir juste après la clause de mise à jour. Réarranger votre requête avec un peu de changement fait le travail.

 UPDATE DHE.dbo.tblAccounts SET DHE.dbo.tblAccounts.ControllingSalesRep = DHE_Import.dbo.tblSalesRepsAccountsLink.SalesRepCode from DHE.dbo.tblAccounts INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink ON DHE.dbo.tblAccounts.AccountCode = DHE_Import.tblSalesRepsAccountsLink.AccountCode 
 UPDATE table1 a inner join table2 b on (a.kol1=abkol1...) SET a.kol1=b.kol1 WHERE a.kol1='' ... 

pour moi jusqu'à ce que la syntaxe fonctionne -MySQL

Cela devrait ressembler à ceci:

 UPDATE DHE.dbo.tblAccounts SET DHE.dbo.tblAccounts.ControllingSalesRep = DHE_Import.dbo.tblSalesRepsAccountsLink.SalesRepCode from DHE.dbo.tblAccounts INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink ON DHE.dbo.tblAccounts.AccountCode = DHE_Import.tblSalesRepsAccountsLink.AccountCode 

La table de mise à jour est répétée dans la clause FROM.

Il est expliqué ici http://erabhinavrana.blogspot.in/2014/01/how-to-execute-update-query-by-applying.html

Il a également d'autres extraits de code utiles qui sont couramment utilisés.

 update <dbname of 1st table>.<table name of 1st table> A INNER JOIN <dbname of 2nd table>.<table name of 2nd table> RA ON A.<field name of table 1>=RA.<field name of table 2> SET A.<field name of table 1 to be updated>=RA.<field name of table 2 to set value in table 1> 

Remplacez datatables dans <> par vos valeurs appropriées.

C'est tout. la source:

http://www.dynamic-coders.com/how-to-update-two-different-tables-in-different-databases-on-same-server

ce qui peut être utile

 Update A INNER JOIN B ON A.COL1=B.COL3 SET A.COL2='CHANGED', A.COL4=B.COL4,...... WHERE ....; 
 //For Access Database: UPDATE ((tblEmployee LEFT JOIN tblCity ON (tblEmployee.CityCode = tblCity.CityCode)) LEFT JOIN tblCountry ON (tblEmployee.CountryCode = tblCountryCode)) SET tblEmployee.CityName = tblCity.CityName, tblEmployee.CountryName = tblCountry.CountryName WHERE (tblEmployee.CityName = '' OR tblEmployee.CountryName = '') 
 Update one table using Inner Join UPDATE Table1 SET name=ml.name FROM table1 t inner JOIN Table2 ml ON t.ID= ml.ID