2009-10-22 6 views
0

Вот упрощенная версия моей проблемы:SQL обновление одной таблицы из другой таблицы

Table 1 
Key1, lastdate, lasttranstype 

Table2 
Table1key1, trandate, trantype 

Я хочу SQL заявление, чтобы обновить lastdate и lasttransdate на table1 для каждой записи в этой таблице, используя запись соответствия в Table2 с последняя дата

Моя БД - это прогресс.

Возможно ли это (я могу, конечно, написать программу для этого, но я бы предпочел сделать это только с помощью инструкции SQL)?

ответ

0
update table1, table2 
set table1.lastdate = table2.trandate, table1.lasttranstype = table2.trantype 
where table1.key1 = table2.table1key1 
+0

К сожалению, Progress не позволяет использовать две таблицы в заявлении об обновлении. Я также пробовал набор таблиц обновлений (,,) = (Выбрать ...), но не может найти способ получить только одну строку для каждой обновляемой строки. – Leo

+0

@Leo - проверьте мой обновленный ответ на возможное решение –

1

В T-SQL:

UPDATE Table1 
SET lastdate = trandate, lasttranstype = trantype 
FROM Table1 INNER JOIN Table2 ON Table1.Key1 = Table2.Table1Key1 

EDIT: Я не знал, что прогресс был имя РСУБД. Будет ли следующая работа для вас?

UPDATE Table1 
SET lastdate = 
(SELECT trandate FROM Table2 WHERE Table2.Table1Key1 = Table1.Key1), 
lasttranstype = 
(SELECT trantype FROM Table2 WHERE Table2.Table1Key1 = Table1.Key1) 
+0

AFAIK, UPDATE with JOIN работает только в T-SQL. Это определенно не ANSI SQL. –

+0

Я обновил ответ –

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