2012-03-27 15 views
30

:-)अद्यतन क्वेरी 1 सर्वर पर 2 अलग डेटाबेस में तालिकाओं के बीच में शामिल हों

दोनों डेटाबेस कुछ 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 में एक प्रश्न कर सकते हैं पर हैं समान वाक्यविन्यास वाले लिंक किए गए तालिकाओं के साथ - लेकिन एसक्यूएल इसे पसंद नहीं करता है।

मुझे यकीन है कि यह एक सरल मुद्दा :-D

धन्यवाद है हूँ!

उत्तर

69

आप इसे सिर्फ शैली कह सकते हैं, लेकिन मैं पठनीयता में सुधार करने के लिए अलियासिंग पसंद करता हूं।

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

यह MySQL पर काम प्रतीत नहीं होता काम किया। सही वाक्यविन्यास 'अद्यतन DHE.dbo.tblAccounts एक INNER जॉइन DHE_Import.dbo.tblSalesRepsAccountsLink आरए पर A.AccountCode = RA.AccountCode SET ControllingSalesRep = RA.SalesRepCode' होगा। – user1111929

+0

यह सही है ... उपरोक्त उत्तर (@jerry द्वारा प्रस्तावित) mysql के लिए काम नहीं करता है। – htobon

+0

आपको बहुत धन्यवाद –

1

इस तरह दिखना चाहिए: तालिका

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 खंड में दोहराया जाता है।

4

इसके देर से खेद है, लेकिन मुझे लगता है कि यह उन लोगों की मदद करेगा जो यहां समान समस्या का हल ढूंढ रहे हैं। सेट क्लॉज अपडेट क्लॉज के ठीक बाद आना चाहिए। तो थोड़ा सा परिवर्तन के साथ अपनी क्वेरी को पुनर्व्यवस्थित करना काम करता है।

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

मेरी मदद की। धन्यवाद। –

1

यह यहाँ समझाया गया है 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

+0

डेडलिंकिंग को रोकने के लिए आपको अपनी पोस्ट में दिए गए लिंक का सारांश पेस्ट करना चाहिए – foibs

1

जो उपयोगी हो सकता है

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

मेरे लिए जब तक वाक्य रचना -MySQL

संबंधित मुद्दे