Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка в запросе [D5, dBase, FoxPro]


andyfirst ©   (2002-03-05 14:44:00) 

Делаю запрос типа:
Update T1 Set G07 = (select G07 From T2 Where ...)
Where NGO In (select T3 ...)
На что получаю сообщение об ошибке от BDE:
Single row subquery produced more than one row.
Я так понимаю, что ему не нравится то, что я пытаюсь обновить множество записей множеством записей. Но мне нужно обновить не одним значением все поле, а соответствующую запись соответствующим значением из другой записи. Как быть?


Johnmen   (2002-03-05 17:24:00) [1]

>roottim : Если работает в Access, то это что-то ! %o)))))


roottim   (2002-03-05 17:20:00) [2]

Update T1 Set G07 = (select MAX(G07) From T2 Where T2.ID=T1.ID...)
Where T1.NGO In (select ...)


roottim   (2002-03-05 17:01:00) [3]

знаеш!... в оракле такая штука точно не пройдет!...
а вот в Access это работает как ни странно.. я так нивзначай подумал Foх, Access одна байда!... почему нет!!!
как видиш... чуш иногда работает :)


Johnmen   (2002-03-05 16:42:00) [4]

>roottim : Ты бы сначала проверил работоспособность своего запроса ! Это же, извини, чушь !


roottim   (2002-03-05 16:33:00) [5]

Update T1, T2 Set
T1.G07 = T2.GO7
Where
t1.ID=t2.ID and
NGO In (select T3 ...)


MetallAdm   (2002-03-05 16:22:00) [6]

а как насчет курсора ??


Johnmen   (2002-03-05 15:37:00) [7]

В рамках одного запроса - неразрешимо...


andyfirst   (2002-03-05 15:30:00) [8]

Но мне нужно обновить ряд записей не одинаковой информацией, например, присвоить полю значение = 3, а информацией из соответствующих записей другой таблицы, т.е., грубо говоря, множество обновить множеством.


deleon   (2002-03-05 14:59:00) [9]

(select G07 From T2 Where ...)
этот подзапрос у тебя может возвращать более одного значения, поэтому его нужно переделать хотя-бы так:
(select Max(G07) From T2 Where ...)


Наверх

Титульная страница Поиск, карта сайта Написать письмо