![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос из подчиненной таблицы [D5, Paradox]
Julia © (2004-01-05 07:13:00)
Подскажите, пожалуйста. Помогите найти другое решение.
Есть 2 таблицы: главная и подчиненная. Запросом беру необходимые данные из подчиненной и сравниваю циклом в цикле
while not eof Table1 и while not eof Запрос, и если Table1.Field1=Запрос.Field1, то Table1 корректирую и Table1.Field2 присваиваю значение из определенного поля запроса. Затем Table1.First, а Запос.Next и все сначала.
Процесс идет довольно длительно, учитывая что Table1 крутится с начала до самого конца столько раз, сколько записей в запросе. Может, есть другой выход?
Sergey13 (2004-01-05 09:04:00) [41]
2Julia (05.01.04 08:45) [5]
Ну во первых апдейтить таблицу пациентов при этом плохой тон. Я не говорю что это совсем уж неправильно, но криво - это точно.
Тебе (если уж шибко хочется) нужно примерно так:
update table1 a
set a.summa=(select sum(b.summa) from table2 b where a.cod=b.cod)
Но повторюсь, это неправильно. Эту сумму можно получать динамически, а не апдейтить главную таблицу при каждом новом платеже в подчиненной.
Нечто вроде:
select a.cod,sum(b.summa)
from table1 a,table2 b
where a.cod=b.cod
group by a.cod
>Но проблема в том, что у меня не Table2, а запрос.
Не понял, это то тут при чем?
Julia (2004-01-05 08:45:00) [42]
SERGEY13.
У меня пример такой. Главная таблица содержит инф-цию по пациенту, подчиненная - услуги ему оказанные. Нужно запросом суммировать оплату за услуги по пациенту в подчиненной таблице и сумму подставить в главную таблицу. Как их связать в подобном Update по полю Table1.cod и Запрос на сумму.Cod. Была бы вместо запроса таблица я бы написала
update table1 as a
inner join table2 as b
on a.cod=b.cod
set a.summa=b.summa
Но проблема в том, что у меня не Table2, а запрос.
Sergey13 (2004-01-05 08:24:00) [43]
В общем случае примерно так:
update table1
set pole1=(select pole1 from table2 where ...)
В подзапросе по условию должна выводиться ОДНАзапись.
Julia (2004-01-05 07:50:00) [44]
Как сделать это через update?
Julia (2004-01-05 07:26:00) [45]
Я беру первую запись запроса. Работаю с ней. И в этот момент таблицу проглядываю с начала до конца. Нашла то, что надо в таблице и заполнила в ней поле. Затем яперехожу к следующей записи запроса и опять ищу то, что надо в таблице, конечно же сначала до конца.
Ильш (2004-01-05 07:18:00) [46]
А зачем Table1.First? Ты же уже вроде бы проглядел все записи с начала Table1? Так иди дальше. Зачем First?