Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Массовый update одной таблицы по данным другой таблицы / 6 сообщений из 6, страница 1 из 1
24.04.2013, 13:32
    #38238122
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массовый update одной таблицы по данным другой таблицы
Здравствуйте всем!

Помогите, пожалуйста, реализорвать скрипт.

Есть две таблицы: TAB1(TB1_ID, TB1_FLD) и TAB2(TB2_ID, TB1_ID, TB2_FLD).
Необходимо в таблице TAB1 сделать update поля TB1_FLD, взяв значения TB1_FLD=TB2_FLD по TB1_ID из таблицы TAB2.

Конструкция
Код: sql
1.
2.
with t2 as (select * from TAB2)
update TAB1 set TB1_FLD=t2.TB2_FLD where TB1_ID=t2.TB1_ID



не работает :-(

С уважением, Семен Попов
...
Рейтинг: 0 / 0
24.04.2013, 13:38
    #38238141
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массовый update одной таблицы по данным другой таблицы
DB2 9.7
...
Рейтинг: 0 / 0
24.04.2013, 14:30
    #38238264
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массовый update одной таблицы по данным другой таблицы
На помощь пришли Compound statements . Если кому-то интересно, то прилагаю решение
Код: sql
1.
2.
3.
4.
5.
6.
begin
 for t2 as (select * from TAB2)
 do
  update TAB1 set TB1_FLD=t2.TB2_FLD where TB1_ID=t2.TB1_ID;
 end for;
end@
...
Рейтинг: 0 / 0
24.04.2013, 14:51
    #38238328
const64
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массовый update одной таблицы по данным другой таблицы
Semen Popov,

А так не работает?

Код: sql
1.
2.
3.
update TAB1 t1
set t1.TB1_FLD=(select t2.TB2_FLD from TAB2 t2 where t1.TB1_ID=t2.TB1_ID)
where t1.TB1_ID in (select distinct TB1_ID from TAB2)
...
Рейтинг: 0 / 0
25.04.2013, 12:00
    #38239736
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массовый update одной таблицы по данным другой таблицы
const64, cпасибо. Такой вариант тоже работает
...
Рейтинг: 0 / 0
25.04.2013, 12:03
    #38239742
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массовый update одной таблицы по данным другой таблицы
Semen Popovconst64, cпасибо. Такой вариант тоже работаетЕдинственное, правильнее было бы так
Код: sql
1.
2.
3.
update TAB1 t1
set t1.TB1_FLD=(select t2.TB2_FLD from TAB2 t2 where t1.TB1_ID=t2.TB1_ID fetch first row only)
where t1.TB1_ID in (select distinct TB1_ID from TAB2)

потому что уникальности по t2.TB1_ID нет
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Массовый update одной таблицы по данным другой таблицы / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]