2012-04-27 13 views
6

मेरे पास दो टेबल हैं: account_company और document_invoice। तालिका खाता_कंपनी में 2 कॉलम हैं: company_id और company_name। तालिका दस्तावेज़_इनवोइस में एक ही कॉलम हैं: company_id और company_name। कुछ हुआ और document_invoice से कॉलम कंपनी के नाम से सभी डेटा हटाएं।मैं टेबल के बीच डेटा कॉपी कैसे करूं PostgreSQL

खाता कंपनी तालिका से डेटा को document_invoice में कॉपी करने के लिए मैं SQL क्वेरी कैसे लिख सकता हूं? मैं अद्यतन और एसईटी का उपयोग कर रहा हूं लेकिन मुझे बिल्कुल नहीं पता कि कैसे।

UPDATE document_invoice 
    SET company_name = (SELECT company_name FROM account_company) 
WHERE document_id.company_name=document_id.account 

enter image description here

+1

थोड़ा OT, पर विचार * ले जाने नहीं * दस्तावेज़ चालान तालिका में कंपनी का नाम है, जब तक आपको लगता है कंपनी का नाम बदल सकता है और आप चाहते हैं चालान के समय से कंपनी के नाम का मूल्य कैप्चर करने के लिए। (फिर भी आप इस मुद्दे के अस्थायी प्रबंधन पर विचार कर सकते हैं, लेकिन यह शीर्ष पर हो सकता है।) डेटा के अनावश्यक भंडारण को अद्यतन करने के लिए यह अधिक महंगा बनाता है और यह जोखिम उत्पन्न करता है कि वे सिंक से बाहर हो सकते हैं। यही वह है जो जुड़ता है। महंगा होने के बारे में एफयूडी पर विश्वास न करें। – kgrittn

+1

मैं kgrittn से सहमत हूं: यदि आपके पास पहले से document_invoice में company_id है, तो उस तालिका में company_name की एक प्रति रखने की आवश्यकता नहीं है। –

उत्तर

8

यह काम करना चाहिए:

UPDATE document_invoice t1 
SET company_name = t2.company_name 
FROM account_company t2 
WHERE t1.company_id = t2.company_id 
+0

अभी तक केवल वैध जवाब। –

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