powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновление поля главной таблицы из статистики подчиненной таблицы
20 сообщений из 20, страница 1 из 1
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39272698
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локальные таблицы каждого магазина таковы:
Главная таблица "KlientTorg": klID, klOtdel, klDate, klTime.
Подчиненная таблица: "Torg": trID, klID, trCena, trKol.

Каждый магазин заливает свои данные в общую центральную базу в таблицы:
Главная таблица "TsKlientTorg": ID, klID, klOtdel, klDate, klTime, klSum
Подчиненная таблица: "TsTorg": ID, trID, klID, klOtdel, trCena, trKol.

Изначально в TsKlientTorg.klSum ничего не заливают. Мне самому потом надо SQL-запросом заполнить это поле по формуле Sum(TsTorg.trCena*TsTorg.trKol), чтобы для быстроты анализа работать в дальнейшем только одной таблицой.

Помогите с Ubdate-запросом.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39272753
_гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так?
ТЗ(?..) Локальные таблицы каждого магазина :

Главная таблица "KlientTorg" : klID, klOtdel, klDate, klTime .

Подчиненная таблица: "Torg" : trID, klID, trCena, trKol .

Каждый магазин заливает свои данные в таблицу общей центральной базы :

Главная таблица "TsKlientTorg" : ID, klID, klOtdel, klDate, klTime, klSum

Подчиненная таблица: "TsTorg" : ID, trID, klID, klOtdel, trCena, trKol .

--------
Код: plaintext
1.
2.
3.
4.
5.
6.
 Изначально в TsKlientTorg.klSum ничего не заливают. 

Потом надо SQL-запросом заполнить это поле по формуле: 

 [code=sql]
Sum(TsTorg.trCena*TsTorg.trKol)

, чтобы для быстроты анализа работать в дальнейшем только одной таблицей

1) Вопрос о переделке, коренной переделке структуры рассматривается?
2) Каким образом данные "заливаются" в каждом конкретном случае?
3) Как конкретно каждые таблицы связаны как главные\подчинённые?

Прежде чем задать вопрос...
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39272782
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_гурДТак?

Да, так.


_гурД1) Вопрос о переделке, коренной переделке структуры рассматривается?
2) Каким образом данные "заливаются" в каждом конкретном случае?
3) Как конкретно каждые таблицы связаны как главные\подчинённые?

1) Можно рассмотреть.
2) Магазины работают автономно. В конце рабочего времени подключаются к серверу и заливают последние свежие записи.
Код: sql
1.
2.
3.
4.
5.
INSERT INTO TsKlientTorg.klID, TsKlientTorg.klOtdel, TsKlientTorg.klDate, TsKlientTorg.klTime
SELECT KlientTorg.klID, KlientTorg.klOtdel, KlientTorg.klDate, KlientTorg.klTime

INSERT INTO TsTorg.trID, TsTorg.klID, TsTorg.klOtdel, TsTorg.trCena, TsTorg.trKol.
SELECT Torg.trID, Torg.klID, KlientTorg.klOtdel, Torg.trCena, Torg.trKol.


3) В магазинах KlientTorg.klID=Torg.klID, в центральной базе TsKlientTorg.klID=TsTorg.klID, TsKlientTorg.klOtdel=TsTorg.klOtdel

_гурД Прежде чем задать вопрос...
Старался как мог. Учту.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39272825
Адеке
Код: sql
1.
2.
3.
4.
5.
INSERT INTO TsKlientTorg.klID, TsKlientTorg.klOtdel, TsKlientTorg.klDate, TsKlientTorg.klTime
SELECT KlientTorg.klID, KlientTorg.klOtdel, KlientTorg.klDate, KlientTorg.klTime

INSERT INTO TsTorg.trID, TsTorg.klID, TsTorg.klOtdel, TsTorg.trCena, TsTorg.trKol.
SELECT Torg.trID, Torg.klID, KlientTorg.klOtdel, Torg.trCena, Torg.trKol.

В ваших конструкциях нет раздела FROM. Просто не указали или и так работает?
Первый запрос можно построить на таблицах KlientTorg и Torg с группировкой по KlientTorg.klID, KlientTorg.klOtdel, First по KlientTorg.klDate, KlientTorg.klTime и Sum по Torg.trKol. Поле klSum указать в разделе INTO.
А вообще, хорошо подумайте, нужно ли вам это поле. Любое изменение в подчиненной таблице может сделать это значение не актуальным. Проще и надежнее получить сумму запросом на выборку.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39272879
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте
Код: sql
1.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID);
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39272987
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )В ваших конструкциях нет раздела FROM. Просто не указали или и так работает?

Поленился указать, потому что и так понятно.

Анатолий ( Киев )А вообще, хорошо подумайте, нужно ли вам это поле. Любое изменение в подчиненной таблице может сделать это значение не актуальным. Проще и надежнее получить сумму запросом на выборку.
Я предусмотрел чтобы это поле всегда держался актуальным (корректировка при изменении подчиненной таблицы).

Анатолий ( Киев )Проще и надежнее получить сумму запросом на выборку.
Конечно, я так и пробовал сперва. Но выполняется долго. Представьте, магазинов несколько, в одном магазине в день сотни клиентов, один клиент около десяти покупок.
А так в основе, в магазинах нет доступа на корректировку старых данных.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39272994
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Поле klSum указать в разделе INTO.
В теперешней заливке так и буду. Мне сейчас надо на уже залитые данные Update сделать.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39272995
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichelleПопробуйте
Код: sql
1.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID);


Функция DSum - наверно будет крайний вариант, потому что она не быстрая.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273000
Адеке__MichelleПопробуйте
Код: sql
1.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID);


Функция DSum - наверно будет крайний вариант, потому что она не быстрая.
Для разовой операции сгодится. Только в условие надо klOtdel добавить.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273007
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адеке__MichelleПопробуйте
Код: sql
1.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID);


Функция DSum - наверно будет крайний вариант, потому что она не быстрая.Но, поскольку у ВасАдеке2) Магазины работают автономно. В конце рабочего времени подключаются к серверу и заливают последние свежие записи.
Код: sql
1.
2.
3.
4.
5.
INSERT INTO TsKlientTorg.klID, TsKlientTorg.klOtdel, TsKlientTorg.klDate, TsKlientTorg.klTime
SELECT KlientTorg.klID, KlientTorg.klOtdel, KlientTorg.klDate, KlientTorg.klTime

INSERT INTO TsTorg.trID, TsTorg.klID, TsTorg.klOtdel, TsTorg.trCena, TsTorg.trKol.
SELECT Torg.trID, Torg.klID, KlientTorg.klOtdel, Torg.trCena, Torg.trKol.


3) В магазинах KlientTorg.klID=Torg.klID, в центральной базе TsKlientTorg.klID=TsTorg.klID, TsKlientTorg.klOtdel=TsTorg.klOtdel., добавьте в конец процедуры заливки каждым магазином это
Код: sql
1.
2.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID)
WHERE klID=<Id конкретного магазина>;

И все будет быстро.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273010
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Адекепропущено...

Функция DSum - наверно будет крайний вариант, потому что она не быстрая.
Для разовой операции сгодится. Только в условие надо klOtdel добавить.
В главной таблице 1.2млн записей, в подчиненной - 4млн записей.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273011
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichelleАдекепропущено...

Функция DSum - наверно будет крайний вариант, потому что она не быстрая.Но, поскольку у ВасАдеке2) Магазины работают автономно. В конце рабочего времени подключаются к серверу и заливают последние свежие записи.
Код: sql
1.
2.
3.
4.
5.
INSERT INTO TsKlientTorg.klID, TsKlientTorg.klOtdel, TsKlientTorg.klDate, TsKlientTorg.klTime
SELECT KlientTorg.klID, KlientTorg.klOtdel, KlientTorg.klDate, KlientTorg.klTime

INSERT INTO TsTorg.trID, TsTorg.klID, TsTorg.klOtdel, TsTorg.trCena, TsTorg.trKol.
SELECT Torg.trID, Torg.klID, KlientTorg.klOtdel, Torg.trCena, Torg.trKol.


3) В магазинах KlientTorg.klID=Torg.klID, в центральной базе TsKlientTorg.klID=TsTorg.klID, TsKlientTorg.klOtdel=TsTorg.klOtdel., добавьте в конец процедуры заливки каждым магазином это
Код: sql
1.
2.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID)
WHERE klID=<Id конкретного магазина>;

И все будет быстро.

При заливке свежих записей так и буду делать, но мне сейчас надо пройтись по старым записям в центральной базе.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273126
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle
Код: sql
1.
2.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID)
WHERE klID=<Id конкретного магазина>;

И все будет быстро.
Вот это WHERE не совсем понял. Не могли бы разъяснить?
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273171
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адеке__Michelle
Код: sql
1.
2.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID)
WHERE klID=<Id конкретного магазина>;

И все будет быстро.
Вот это WHERE не совсем понял. Не могли бы разъяснить?Ну, я предположила, что данные каждого магазина характеризуются своим Id.
И после загрузки "своих" данных магазин заполнит поле klSum только в "своих" записях,
то есть, загруженных в данном сеансе. Выделит эти записи по этому своему Id.
Или там другой смысл?
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273377
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

понял. Вы просто перепутали поля klID с полем klOtdel.
klID - это ID покупки клиента.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273379
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адеке,

Я бы перепутала, если бы знала их назначение.
А так я просто не угадала.
Они ведь нигде Вами не объяснены.)))
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273389
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

Спасибо. Значит пока кроме DSum нет лучшего варианта.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273394
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адеке,

Дело в том, что наличие подзапроса или JOIN'а с запросом с группировкой
приведут к тому, что основной запрос станет необновляемым,
то есть UPDATE не выполнится.
А так хоть как-то...
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273396
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адеке,

Ну, или предварительно сбросить сформированные группировкой суммы в отдельную таблицу.
А затем уже с этой таблицей JOIN с UPDATE.
Так, наверное, будет побыстрее.
...
Рейтинг: 0 / 0
Обновление поля главной таблицы из статистики подчиненной таблицы
    #39273401
Адеке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

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


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