2012-03-27 11 views
30

Potrzebujesz pomocy składni SQL :-)Zapytanie Aktualizacja z INNER JOIN między tabelami w 2 różnych baz danych na 1 serwer

obu bazach danych znajdują się na tym samym serwerze

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 

mogę zrobić kwerendę w programie Access z połączonymi tabelami o podobnej składni - BUT SQL go nie lubi.

Jestem pewien, że to prosty problem :-D

Dzięki!

Odpowiedz

69

Można to nazwać po prostu stylem, ale preferuję wygładzanie w celu poprawy czytelności.

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

nie wydają się działać na MySQL. Poprawna składnia to "UPDATE DHE.dbo.tbl Konta A INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA ON A.AccountCode = RA.AccountCode SET ControllingSalesRep = RA.SalesRepCode". – user1111929

+0

To prawda ... powyższa odpowiedź (zaproponowana przez @jerry) nie działa dla mysql. – htobon

+0

dziękuję bardzo –

1

powinien wyglądać następująco: stół

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 jest powtarzany w klauzuli FROM.

4

Przepraszam za spóźnienie, ale myślę, że przyda się to tym, którzy lądują tutaj, szukając rozwiązania podobnego problemu. Klauzula set powinna nadejść zaraz po klauzuli aktualizacji. Przeorganizowanie zapytania przy odrobinie zmian działa.

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

Pomógł mi. Dziękuję Ci. –

1

To jest wyjaśnione tutaj http://erabhinavrana.blogspot.in/2014/01/how-to-execute-update-query-by-applying.html

Posiada również inne użyteczne fragmenty kodu, które są powszechnie używane.

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> 

Zastąp dane w <> odpowiednimi wartościami.

To wszystko. źródło:

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

+0

Powinieneś wkleić podsumowanie podanego linku w swoim poście, aby zapobiec nieumyślnemu linkowaniu – foibs

1

, które mogą być użyteczne

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='' ... 

dla mnie aż składnia pracował -MySQL

Powiązane problemy