|
|
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
Как бы побыстрее подсчитать количество записей в группах, проставляя в каждой записи общее кол-во в группе? Только не dcount - уж больно долго. Даже не знаю, что быстрее будет, dcount или идти по рекордсету увеличивая переменную на единицу, а при смене группы, возвращаться на начало предыдущей и быстренько проставлять итоговое значение. Оба варианта тормознутые. Может есть еще каки-нить варьянты??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 22:45 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
Открыть рекордсет с группировкой, идти по нему, в каждой записи сразу брать количество и запускать апдейт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 22:50 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
Не понятно, для чего это надо, но уж если надо :) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 23:21 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
А потом идти по этому рекордсету и делать апдейт в каждой записи? Имхо, запускать апдейт через SQL погруппно будет быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 00:23 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
Кто-то из нас , что-то не понял InvisibleКак бы побыстрее подсчитать количество записей в группах, проставляя в каждой записи общее кол-во в группе? Только не dcount - уж больно долго. Нигде не сказано, что надо проапдейтить исходную таблицу. P.S Для красоты восприятия надо бы конечно добавать в конец запроса ORDER BY t1.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 00:39 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
VIG, проставляя в каждой записи- это разве не проапдейтить исходную таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 00:42 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
Вот, нашел подтверждение. автора при смене группы, возвращаться на начало предыдущей и быстренько проставлять итоговое значение - это точно значит, что нужно заносить значения физически в таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 00:44 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
Саныч, что надо на самом деле знает только автор вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 00:51 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
Да вообще все в мире относительно и мир непознаваем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 00:52 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
А вот тут полностью с тобой согласен. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 00:58 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
"Открыть рекордсет с группировкой, идти по нему, в каждой записи сразу брать количество и запускать апдейт." В смысле имеется ввиду, что на каждую группу открывать рекордсет и брать количества записей?????? :) А через SQL действительно работало быстрее, только тот запрос создавал таблицу, а теперь ему нужно апдейтить, а он только и пишет что запрос должен быть обновляемым. Вот он (точнее они :) Первый запрос выделяет количества предложений по позиции (предложение - это там где отсутствует фирма поставщик) SELECT РабТаб.[Код детали] AS Код, Count(РабТаб.[Код детали]) AS Кол FROM РабТаб WHERE (((РабТаб.[Фирма поставщик]) Is Null)) GROUP BY РабТаб.[Код детали]; Второй берет количества без предложений. SELECT РабТаб.[Код детали], Count(РабТаб.[Код Детали])-IIf(IsNull(ПодчКол.Кол),0,ПодчКол.Кол) AS [Count-Детали] FROM РабТаб LEFT JOIN ПодчКол ON РабТаб.[Код Детали] = ПодчКол.Код GROUP BY РабТаб.[Код Детали], ПодчКол.Кол; А третий обновляет записи. UPDATE РабТаб INNER JOIN КолПредл ON РабТаб.[Код Детали] = КолПредл.[Код Детали] SET РабТаб.[Count-Детали] = [КолПредл]![Count-Детали]; НО, НО и еще раз НО. ТРЕТИЙ ЗАПРОС ПИШЕТ, ЧТО В ОПЕРЦИИ ДОЛЖЕН ИСПОЛЬЗОВАТЬСЯ ОБНОВЛЯЕМЫЙ ЗАПРОС. Вот. А таблицу, конечно, нужно обновлять... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 14:27 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
автор"Открыть рекордсет с группировкой, идти по нему, в каждой записи сразу брать количество и запускать апдейт." В смысле имеется ввиду, что на каждую группу открывать рекордсет и брать количества записей?????? :) Нет. Открыть рекордсет - это значит открыть один рекордсет. Идти по нему - это значит идти по нему при помощи MoveNext. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 14:42 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
Ну да, то есть при переходе на каждую группу просто запоминать значение dcount в переменной и ставить ее в кажной записи, так? Если так, то это вечнось и есть. UPDATE РабТаб SET РабТаб.[Count-Деталь] = DCount("*","РабТаб","[Фирма поставщик]<>'' and [Код Детали]=" & [Код Детали]); Это тоже вечность :) А побыстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 14:57 |
|
||
|
Подсчитать...
|
|||
|---|---|---|---|
|
#18+
Не нужно dcount. Я же сказал - запрос с группировкой. select dd, count(*) as cc from ... group by dd Вот это поле cc будет содержать число, равное количеству записей в группе. Переходим на очередную запись, считываем значение cc. И запускаем апдейт: ccvar=rs!cc ddvar=rs!dd currentdb.execute "update ... set ...=" & cstr(ccvar) & " where dd=" & cstr(ddvar) Он одной командой проапдейтит всю группу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2004, 15:03 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32529283&tid=1674439]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
171ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 452ms |

| 0 / 0 |
