2012-04-27 2 views
6

У меня есть две таблицы: account_company и document_invoice. Таблица account_company имеет 2 столбца: company_id и company_name. Таблица document_invoice имеет те же столбцы: company_id и company_name. Что-то случилось и удалите все данные из названия компании-столбца из документа_invoice.Как скопировать данные между таблицами PostgreSQL

Как написать SQL-запрос для копирования данных из таблицы компаний компании в документ_invoice? Я использую 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

Слегка OT, рассмотреть * не несут * название компании в таблице документа счета-фактуры, если вы считаете, что название компании может измениться, и вы хотите для определения стоимости названия компании с момента выставления счета. (Даже тогда вы могли бы подумать о временном управлении проблемой, но это может быть сверху.) Избыточное хранение данных повышает стоимость обновления и создает риск того, что они могут выпасть из синхронизации. Для этого нужны объединения. Не верьте FUD в том, что входы стоят дорого. – kgrittn

+1

С агрегированием с kgrittn: Если у вас уже есть company_id в документе_invoice, нет необходимости хранить копию 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

Только действительный ответ. –

Смежные вопросы