powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / опять update...
5 сообщений из 5, страница 1 из 1
опять update...
    #34360398
Тимур Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется таблица vibor(g33a,name,g46i,g46e)
заполняю три поля

insert into vibor(g33a,name,g46i) (select char(g33a,4),c.small_name,sum(g46)
from t_st2006,country c where not id=any(select cntkod from countrygroupdef where groupkod=2)and g01a='ИМ' and s15_17=c.id
group by char(g33a,4),c.small_name,g46 order by g46 desc fetch first 50 rows only)

делаю такой update для 4-го поля

update vibor r set (g46e)=(select sum(g46)from t_st2006,country c where not id=any(select cntkod from countrygroupdef
where groupkod=2)and g01a='ЭК' and s15_17=c.id and char(g33a,4)=r.g33a and
c.small_name=r.name
group by char(g33a,4),c.small_name,g46 order by g46 desc fetch first 50 rows only)

Результат скалярной полной выборки, оператора SELECT INTO или
оператора VALUES INTO - больше одной строки таблицы. SQLSTATE=21000
хотя я указал c.small_name=r.name, в чем я ошибаюсь?
...
Рейтинг: 0 / 0
опять update...
    #34360500
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У вас уникальный ключ (или индекс) в таблице vibor есть?
Если есть, то какой?
...
Рейтинг: 0 / 0
опять update...
    #34360527
Тимур Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinУ вас уникальный ключ (или индекс) в таблице vibor есть?
Если есть, то какой?

name получается и есть ключ.
...
Рейтинг: 0 / 0
опять update...
    #34360648
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тимур Бname получается и есть ключ.Вы понимаете, что делая group by char(g33a,4),c.small_name,g46 , вы в обоих случаях (insert и update) для одного и того же small_name можете получить несколько записей?
А в update вы еще и пытаетесь g33a использовать в качестве ключевой колонки, и все равно не получается, т.к. даже для этих 2-х полей (g33a и small_name) в каких-то случаях сабселект возвращает несколько записей.
Если бы оно было так, как вы говорите, то update должен был бы выглядеть примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
update vibor r set (g46e)=
(
select sum(g46)
from t_st2006,country c 
where not id=any(select cntkod from countrygroupdef where groupkod= 2 )
and g01a='ЭК' and s15_17=c.id and c.small_name=r.name
);
...
Рейтинг: 0 / 0
опять update...
    #34360758
Тимур Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein Тимур Бname получается и есть ключ.Вы понимаете, что делая group by char(g33a,4),c.small_name,g46 , вы в обоих случаях (insert и update) для одного и того же small_name можете получить несколько записей?
А в update вы еще и пытаетесь g33a использовать в качестве ключевой колонки, и все равно не получается, т.к. даже для этих 2-х полей (g33a и small_name) в каких-то случаях сабселект возвращает несколько записей.
Если бы оно было так, как вы говорите, то update должен был бы выглядеть примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
update vibor r set (g46e)=
(
select sum(g46)
from t_st2006,country c 
where not id=any(select cntkod from countrygroupdef where groupkod= 2 )
and g01a='ЭК' and s15_17=c.id and c.small_name=r.name
);


Спасибо что помогли разобраться, я хотел сделать так(по двум ключам)
update vibor r set (g46e)=
(
select sum(g46)
from t_st2006,country c
where not id=any(select cntkod from countrygroupdef where groupkod=2)
and g01a='ЭК' and s15_17=c.id and c.small_name=r.name,char(g33a,4)=r.g33a
все норм
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / опять update...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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