Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / update insert / 7 сообщений из 7, страница 1 из 1
22.01.2007, 07:47
    #34271022
Тимур Б
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update insert
Добрый день!
такой вопрос
Имеется таблица.заполняю поля
insert into res1 (Наимен_страны ,Количество ,Ст_тыс_долл_США)
(select c.small_name, sum(t.g31b), sum(t.g46) from country c,
temp2 t where t.g15_17=any(select cntkod from countrygroupdef where
groupkod=vr_groupkod) and t.g15_17=c.id and char
(t.g33a,4)=vr_g33a_4 group by c.small_name);

Как сделать update если сам запрос select sum(t.g31b), sum(t.g46) from
country c, temp2 t where t.g15_17=any(select cntkod from countrygroupdef where
groupkod=14) and t.g15_17=c.id and char(t.g33a,4)='8703' group by c.small_name возвращает три строки ?

update res1 set(Количествo ,Сt_тыс_долл_США)=
(select sum(t.g31b), sum(t.g46) from
country c, temp2 t where t.g15_17=any(select cntkod from countrygroupdef where
groupkod=14) and t.g15_17=c.id and char(t.g33a,4)='8703' group by c.small_name);

sqlcode : -811

sqlstate : 21000
Результат скалярной полной выборки, оператора SELECT INTO или оператора VALUES INTO - больше одной строки таблицы.
...
Рейтинг: 0 / 0
22.01.2007, 11:04
    #34271408
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update insert
Добрый день.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
update res1 r
set(Количествo ,Сt_тыс_долл_США)=
(
 select sum(t.g31b), sum(t.g46) 
 from country c, temp2 t 
 where t.g15_17=any
 (
 select cntkod 
 from countrygroupdef 
 where groupkod= 14 
 ) 
 and t.g15_17=c.id 
 and char(t.g33a, 4 )='8703' 
 and c.small_name=r.small_name
)
where exists 
(
 select sum(t.g31b), sum(t.g46) 
 from country c, temp2 t 
 where t.g15_17=any
 (
 select cntkod 
 from countrygroupdef 
 where groupkod= 14 
 ) 
 and t.g15_17=c.id 
 and char(t.g33a, 4 )='8703' 
 and c.small_name=r.small_name
);
...
Рейтинг: 0 / 0
23.01.2007, 07:49
    #34273912
Тимур Б
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update insert
Спасибо !
а может быть можно попробовать что-то вроде такого:

update res1 set(Количествo ,Сt_тыс_долл_США)=
(select sum(t.g31b), sum(t.g46) from
country c, temp2 t where t.g15_17=any
(select cntkod from countrygroupdef where
groupkod=14) and t.g15_17=c.id and char(t.g33a,4)='8703'
group by c.small_name fetch
first 1 row only where c.small_name=r.small_name);
...
Рейтинг: 0 / 0
23.01.2007, 13:02
    #34274908
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update insert
В таком виде - точно не надо.
А чем вам 1-й вариант не понравился?
...
Рейтинг: 0 / 0
24.01.2007, 07:32
    #34277064
Тимур Б
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update insert
Не совсем понятно зачем здесь использовать where exists
и еще такой вопрос обновление идет всего поля (Количествo ,Сt_тыс_долл_США)
а как можно сделать чтобы обновлялись только определенные значения в этих полях (у меня это все в цикле работает)
...
Рейтинг: 0 / 0
24.01.2007, 10:51
    #34277609
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update insert
Тимур БНе совсем понятно зачем здесь использовать where exists Вы написали, что сабселект возвращает 3 строки (т.е. для 3-х разных small_name).
Если в таблице res1 есть отличные small_name от тех 3-х, которые вернет сабселект, то такой update без exists присвоит полям (Наимен_страны ,Количество ,Ст_тыс_долл_США) для этих small_name значения NULL.
Если это то, что вам надо, то exists можно не использовать.
Тимур Би еще такой вопрос обновление идет всего поля (Количествo ,Сt_тыс_долл_США)
а как можно сделать чтобы обновлялись только определенные значения в этих полях (у меня это все в цикле работает)Вопрос не понял.
...
Рейтинг: 0 / 0
25.01.2007, 07:22
    #34280581
Тимур Б
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update insert
Спасибо, я кое-что понял, в моем случае update не подойдет :((. Придется делать join-ом, либо каким-то др способом.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / update insert / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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