Обновить запрос с помощью INNER JOIN между таблицами в двух разных базах данных на 1 сервере
Вам нужна синтаксическая помощь SQL: -)
Обе базы данных находятся на одном сервере
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
Я могу сделать запрос в Access с связанными таблицами с похожим синтаксисом - BUT SQL не нравится.
Я уверен, что это простая проблема: -D
Спасибо!
Ответы
Ответ 1
Вы можете назвать это просто стилем, но я предпочитаю использовать псевдонимы для улучшения читабельности.
UPDATE A
SET ControllingSalesRep = RA.SalesRepCode
from DHE.dbo.tblAccounts A
INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA
ON A.AccountCode = RA.AccountCode
Для MySQL
UPDATE DHE.dbo.tblAccounts A
INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA
ON A.AccountCode = RA.AccountCode
SET A.ControllingSalesRep = RA.SalesRepCode
Ответ 2
Ниже приведен синтаксис 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
Ответ 3
Прошу прощения, но я думаю, это помогло бы тем, кто приземлился здесь, найдя решение подобной проблемы.
Предложение set должно появиться сразу после предложения update. Поэтому перестройка запроса с небольшим изменением делает работу.
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
Ответ 4
UPDATE table1 a
inner join table2 b on (a.kol1=a.b.kol1...)
SET a.kol1=b.kol1
WHERE
a.kol1='' ...
для меня до тех пор, пока не будет обработан синтаксис -MySQL
Ответ 5
Должно выглядеть так:
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
Таблица обновлений повторяется в предложении FROM.
Ответ 6
который может быть полезен
Update
A INNER JOIN B ON A.COL1=B.COL3
SET
A.COL2='CHANGED', A.COL4=B.COL4,......
WHERE ....;
Ответ 7
Здесь объясняется http://erabhinavrana.blogspot.in/2014/01/how-to-execute-update-query-by-applying.html
Он также имеет другие полезные фрагменты кода, которые обычно используются.
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>
Замените данные в <>
соответствующими значениями.
Это.
источник:
http://www.dynamic-coders.com/how-to-update-two-different-tables-in-different-databases-on-same-server
Ответ 8
//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 = '')
Ответ 9
Update one table using Inner Join
UPDATE Table1 SET name=ml.name
FROM table1 t inner JOIN
Table2 ml ON t.ID= ml.ID