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

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

Знатоки SQL! [D5, dBase, FoxPro]


TimPasha ©   (2002-03-21 15:04:00) 

Как обобщить на все договора такой запрос?
update Table1 set Table1.rayon =
(select Table2.rayon from Table2
where Table2.Dogovor=73)
where Table1.Dog=73


Donal_Graeme   (2002-03-22 11:10:00) [1]

ессно, в сложности... ну ка, для каждой записи делать SELECT.
я одного не пойму, почему вариант Polevi не подходит? :-)


TimPasha   (2002-03-22 09:05:00) [2]

> fishka - запросы работают нормально, но меня поразило, что это все же медленнее, чем сначала из одной таблицы выбрать договора и районы, а потом просто обновить в др. таблице районы.
Единым запросом времени на 3600 записей надо 10 секунд примерно,
а раздельными - 6-7. Не знаешь, почему такое может быть - в сложности составленного запроса?


Johnmen   (2002-03-21 18:16:00) [3]

У меня такое тоже часто бывает ... ;o)))


Fareader   (2002-03-21 18:10:00) [4]

Извините, у меня после напряженной работы по оптимизации вставки большого объема данных в IB кажется, что все работают с ним 8)


Johnmen   (2002-03-21 18:04:00) [5]

Мешает dBase и FoxPro ! :)


Fareader   (2002-03-21 18:00:00) [6]

>Johnmen ©
1. я имел ввиду такой запрос как у fishka с distinct.
2. Может так и не надо, но что мешает создать тригер на Before
Update и обработать занчение null


Johnmen   (2002-03-21 17:48:00) [7]

А вот если для Table2.rayon соответствующей записи при where Table2.Dogovor=Table1.Dog не будет найдено, то получиться Table1.rayon=null ! А надо ли так ?


fishka   (2002-03-21 17:01:00) [8]

update Table1 set Table1.rayon =
(select Table2.rayon from Table2
where Table2.Dogovor=Table1.Dog)
- если для каждого Dogovor есть 1 rayon.
или
update Table1 set Table1.rayon =
(select distinct Table2.rayon from Table2
where Table2.Dogovor=Table1.Dog)
- если записей несколько, но у всех Dogovor только 1 уникальный rayon.
В случаях неуникальности rayon для каждого Dogovor задача не имеет смысла.
Но вообще-то чтобы написать желательно бы знать содержание таблиц...


Johnmen   (2002-03-21 16:51:00) [9]

>Fareader © : И что ???


Fareader   (2002-03-21 16:46:00) [10]

>Johnmen © какие проблемы? ставим Distinct и все


asafr   (2002-03-21 16:09:00) [11]

Johnmen, согласен


Johnmen   (2002-03-21 16:00:00) [12]

...и нарываетесь на ...Multiple rows in singleton select...


asafr   (2002-03-21 15:47:00) [13]

И верно
update Table1
set Table1.rayon =
(select Table2.rayon from Table2)


Polevi   (2002-03-21 15:40:00) [14]

UPDATE Table1 SET T1.Rayon=T2.Rayon FROM Table1 T1,Table2 T2 WHERE T2.Dogovor=T1.Dog


Val   (2002-03-21 15:30:00) [15]

убрать условия определения договора - where


Наверх

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