Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать Update? / 7 сообщений из 7, страница 1 из 1
24.04.2003, 12:17
    #32147604
andsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Update?
Хочется сделать update вида:

update t_operation op
set op.comm_rate=bcc.comm_rate
from t_bvd_commission_calc bcc
where op.id=bcc.id

т.е. заполнить значение колонки в одной таблице значениями из другой. На приведенный выще запрос, почти корректный для MS SQL Server, Oracle ругается.
Вариант вида

update t_operation op
set op.comm_rate=(select bcc.comm_rate from t_bvd_commission_calc bcc
where op.id=bcc.id)
мне не нравится, так как на самом деле нужно обновить большее количество колонок.

Как бы это сделать попроще и с наименьшей нагрузкой на сервер?
...
Рейтинг: 0 / 0
24.04.2003, 12:32
    #32147628
Angel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Update?
Если большее количество колонок, то зря не нравится. Пиши col1, col2, ... coln = (SELECT col1, col2, ..., coln ...)
...
Рейтинг: 0 / 0
24.04.2003, 12:52
    #32147665
andsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Update?
А как это сделать? Вот попробовал:

update t_operation op
set op.comm_rate, op.comm_rate_summa, op.comm_currency=
(select bcc.comm_rate, bcc.comm_rate_summa, bcc.comm_currency from t_bvd_commission_calc bcc
where op.id=bcc.id)

Oracle на этот запрос ругается.
...
Рейтинг: 0 / 0
24.04.2003, 13:07
    #32147701
andsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Update?
Вот такой Update заработал:

update t_operation op
set (op.comm_rate, op.comm_rate_summa, op.comm_currency)=
(select bcc.comm_rate, bcc.comm_rate_summa, bcc.comm_currency from t_bvd_commission_calc bcc
where op.id=bcc.id)
...
Рейтинг: 0 / 0
24.04.2003, 13:10
    #32147712
NewYear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Update?
это тебе кажется.


select bcc.comm_rate, bcc.comm_rate_summa, bcc.comm_currency from t_bvd_commission_calc bcc
where op.id=bcc.id

может возвратить пустую строку

еще where нужно поставить для update statement-а
...
Рейтинг: 0 / 0
24.04.2003, 13:24
    #32147746
andsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Update?
Т.е. нужно
update t_operation op
set (op.comm_rate, op.comm_rate_summa, op.comm_currency)=
(select bcc.comm_rate, bcc.comm_rate_summa, bcc.comm_currency from t_bvd_commission_calc bcc
where op.id=bcc.id)
where exists(select * from t_bvd_commission_calc bcc
where op.id=bcc.id) ?

А как-нибудь короче нельзя?
...
Рейтинг: 0 / 0
24.04.2003, 13:27
    #32147752
NewYear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Update?
where
op.id in ( select ... )
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать Update? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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