2012-03-27 18 views
30

Necesita Ayuda sintaxis SQL :-)Consulta de actualización con INNER JOIN entre las tablas de 2 bases de datos diferentes de 1 servidor

Ambas bases de datos se encuentran en el mismo servidor

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 

que pueda hacer una consulta en Access con tablas vinculadas con sintaxis similar, PERO SQL no le gusta.

Estoy seguro de que es un tema sencillo: -D

Gracias!

Respuesta

69

Podría llamarlo simplemente estilo, pero prefiero aliasing para mejorar la legibilidad.

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

Esto no parece trabajar en MySQL. La sintaxis correcta sería 'UPDATE DHE.dbo.tblAccounts A INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA ON A.AccountCode = RA.AccountCode SET ControllingSalesRep = RA.SalesRepCode'. – user1111929

+0

Correcto ... la respuesta anterior (propuesta por @jerry) no funciona para mysql. – htobon

+0

muchas gracias –

1

debería tener este aspecto: mesa

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 

actualización se repite en la cláusula FROM.

4

Lo siento, es tarde, pero supongo que sería de ayuda para aquellos que buscan aquí encontrar una solución a un problema similar. La cláusula set debería aparecer inmediatamente después de la cláusula de actualización. Así que reorganizar tu consulta con un pequeño cambio hace el trabajo.

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 
+1

me ayudó. Gracias. –

1

Se explica aquí http://erabhinavrana.blogspot.in/2014/01/how-to-execute-update-query-by-applying.html

También tiene otros fragmentos de código útiles que se utilizan comúnmente.

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> 

Reemplace los datos en <> con los valores apropiados.

Eso es todo. fuente:

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

+0

Debe pegar un resumen del enlace provisto en su publicación para evitar enlaces muertos – foibs

1

que puede ser útil

Update 
    A INNER JOIN B ON A.COL1=B.COL3 
SET 
    A.COL2='CHANGED', A.COL4=B.COL4,...... 
WHERE ....; 
0
//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 = '') 
0
Update one table using Inner Join 

    UPDATE Table1 SET name=ml.name 
FROM table1 t inner JOIN 
Table2 ml ON t.ID= ml.ID 
3
UPDATE table1 a 
inner join table2 b on (a.kol1=a.b.kol1...) 
SET a.kol1=b.kol1 
WHERE 
a.kol1='' ... 

para mí hasta la sintaxis trabajaron -MySQL

Cuestiones relacionadas