2012-04-27 12 views
6

の間でデータをコピーします。 テーブルaccount_companyには、company_idとcompany_nameという2つの列があります。 表document_invoiceには、同じ列company_idとcompany_nameがあります。 問題が発生し、document_invoiceから列会社名のすべてのデータが削除されました。私はdocument_invoiceするアカウントの会社のテーブルからデータをコピーするには、SQLクエリを書くことができますどのようには、どのように私は2つのテーブルを持つテーブルのPostgreSQL

? 私はUPDATEとSETを使用していますが、正確にはわかりません。

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

を使用すると、会社名を変更するかもしれないと思うと、あなたがしたい場合を除き、文書の請求書テーブルに* *運んない会社名を考えます請求書の日付から会社名の価値を取得する。 (たとえそうであっても、問題の一時的な管理を検討することもできますが、それはトップになる可能性があります)。データの冗長化は更新するのに費用がかかり、同期が外れる可能性があります。これがジョインです。ジョインが高価だとFUDは信じてはいけません。 – kgrittn

+1

私はkgrittnでaggree:あなたはすでにdocument_invoiceでのcompany_idを持っている場合は、そのテーブルにCOMPANY_NAMEのコピーを保持する必要はありません。 –

答えて

8

これは動作するはず:、少しOT

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

これまでのところ有効な回答のみです。 –

関連する問題