powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Update по условию с соединением.
4 сообщений из 4, страница 1 из 1
Update по условию с соединением.
    #32964484
DPH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DPH
Гость
Как правильно написать update для таблицы, где и список обновляемых значений и новые значения определяются через соединение с групповой операцией?

На MS SQL я бы написал что-нибудь вроде

update M
set M.CNT=M.CNT-T.DEC
from
MASTER M
join (select CHILD.MASTERID, count(*) DEC from CHILD where ... group by CHILD.MASTERID ) T on T.MASTERID=M.ID

В DB2, как я понимаю, синаксиса update ... from нет. Как подобный update написать правильно и эффективно?

Писать что-то вроде
UPDATE MASTER M
set M.CNT=M.CNT-(select count(*) from CHILD where MASTERID=M.ID)
where MASTER.ID from (select distinct CHILD.MASTERID where ... )
как-то не хочется.
...
Рейтинг: 0 / 0
Update по условию с соединением.
    #32964489
DPH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DPH
Гость
Прошу прощения,
не
Код: plaintext
where MASTER.ID from (select distinct CHILD.MASTERID where ... )
, а
Код: plaintext
where MASTER.ID in (select distinct CHILD.MASTERID where ... )


Заранее спасибо.
...
Рейтинг: 0 / 0
Update по условию с соединением.
    #32964858
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CREATE TABLE T(pk INT, c1 INT);
CREATE TABLE S(pk INT, c1 INT);

Standard pre SQL4
UPDATE T SET c1 = (SELECT c1 FROM S
WHERE S.pk = T.pk)
WHERE pk IN (SELECT pk FROM S);

IDS/SQL Server
UPDATE T SET c2 = S.c1 FROM T, S
WHERE T.pk = S.pk;

SQL4 Merge
MERGE INTO T USING S ON T.pk = S.pk
WHEN MATCHED THEN UPDATE SET c1 = S.c1;

Используй последнее
...
Рейтинг: 0 / 0
Update по условию с соединением.
    #32972040
DPH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DPH
Гость
Cпасибо. Про merge я и не подумал.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Update по условию с соединением.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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