powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подсчитать...
15 сообщений из 15, страница 1 из 1
Подсчитать...
    #32529087
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как бы побыстрее подсчитать количество записей в группах, проставляя в каждой записи общее кол-во в группе? Только не dcount - уж больно долго.

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

Оба варианта тормознутые. Может есть еще каки-нить варьянты???
...
Рейтинг: 0 / 0
Подсчитать...
    #32529091
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Открыть рекордсет с группировкой, идти по нему, в каждой записи сразу брать количество и запускать апдейт.
...
Рейтинг: 0 / 0
Подсчитать...
    #32529103
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понятно, для чего это надо, но уж если надо :)
Код: plaintext
1.
2.
select * ,
      (select count(*)  from myTable t2 where t2.id=t1.id)  as Num
from myTable t1
...
Рейтинг: 0 / 0
Подсчитать...
    #32529124
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А потом идти по этому рекордсету и делать апдейт в каждой записи? Имхо, запускать апдейт через SQL погруппно будет быстрее.
...
Рейтинг: 0 / 0
Подсчитать...
    #32529126
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-то из нас , что-то не понял

InvisibleКак бы побыстрее подсчитать количество записей в группах, проставляя в каждой записи общее кол-во в группе? Только не dcount - уж больно долго.
Нигде не сказано, что надо проапдейтить исходную таблицу.
P.S Для красоты восприятия надо бы конечно добавать в конец запроса ORDER BY t1.id
...
Рейтинг: 0 / 0
Подсчитать...
    #32529127
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
VIG,
проставляя в каждой записи- это разве не
проапдейтить исходную таблицу?
...
Рейтинг: 0 / 0
Подсчитать...
    #32529128
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот, нашел подтверждение.

автора при смене группы, возвращаться на начало предыдущей и быстренько проставлять итоговое значение
- это точно значит, что нужно заносить значения физически в таблицу.
...
Рейтинг: 0 / 0
Подсчитать...
    #32529132
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, что надо на самом деле знает только автор вопроса.
...
Рейтинг: 0 / 0
Подсчитать...
    #32529133
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да вообще все в мире относительно и мир непознаваем...
...
Рейтинг: 0 / 0
Подсчитать...
    #32529136
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот тут полностью с тобой согласен. :)
...
Рейтинг: 0 / 0
Подсчитать...
    #32529283
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Открыть рекордсет с группировкой, идти по нему, в каждой записи сразу брать количество и запускать апдейт."

В смысле имеется ввиду, что на каждую группу открывать рекордсет и брать количества записей?????? :)

А через 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-Детали];

НО, НО и еще раз НО. ТРЕТИЙ ЗАПРОС ПИШЕТ, ЧТО В ОПЕРЦИИ ДОЛЖЕН ИСПОЛЬЗОВАТЬСЯ ОБНОВЛЯЕМЫЙ ЗАПРОС.
Вот.

А таблицу, конечно, нужно обновлять...
...
Рейтинг: 0 / 0
Подсчитать...
    #32529292
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
автор"Открыть рекордсет с группировкой, идти по нему, в каждой записи сразу брать количество и запускать апдейт."

В смысле имеется ввиду, что на каждую группу открывать рекордсет и брать количества записей?????? :)
Нет. Открыть рекордсет - это значит открыть один рекордсет. Идти по нему - это значит идти по нему при помощи MoveNext.
...
Рейтинг: 0 / 0
Подсчитать...
    #32529299
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, то есть при переходе на каждую группу просто запоминать значение dcount в переменной и ставить ее в кажной записи, так? Если так, то это вечнось и есть.

UPDATE РабТаб SET РабТаб.[Count-Деталь] = DCount("*","РабТаб","[Фирма поставщик]<>'' and [Код Детали]=" & [Код Детали]);

Это тоже вечность :)

А побыстрее?
...
Рейтинг: 0 / 0
Подсчитать...
    #32529306
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Не нужно 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)

Он одной командой проапдейтит всю группу.
...
Рейтинг: 0 / 0
Подсчитать...
    #32529348
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч, спасибо. Это оно!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подсчитать...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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