Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновление поля главной таблицы из статистики подчиненной таблицы / 20 сообщений из 20, страница 1 из 1
12.07.2016, 21:28
    #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
13.07.2016, 05:02
    #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
13.07.2016, 08:04
    #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
13.07.2016, 09:52
    #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
13.07.2016, 10:58
    #39272879
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление поля главной таблицы из статистики подчиненной таблицы
Попробуйте
Код: sql
1.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID);
...
Рейтинг: 0 / 0
13.07.2016, 12:34
    #39272987
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление поля главной таблицы из статистики подчиненной таблицы
Анатолий ( Киев )В ваших конструкциях нет раздела FROM. Просто не указали или и так работает?

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

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

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


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


Функция DSum - наверно будет крайний вариант, потому что она не быстрая.
Для разовой операции сгодится. Только в условие надо klOtdel добавить.
...
Рейтинг: 0 / 0
13.07.2016, 13:02
    #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
13.07.2016, 13:05
    #39273010
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление поля главной таблицы из статистики подчиненной таблицы
Анатолий ( Киев )Адекепропущено...

Функция DSum - наверно будет крайний вариант, потому что она не быстрая.
Для разовой операции сгодится. Только в условие надо klOtdel добавить.
В главной таблице 1.2млн записей, в подчиненной - 4млн записей.
...
Рейтинг: 0 / 0
13.07.2016, 13:07
    #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
13.07.2016, 14:31
    #39273126
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление поля главной таблицы из статистики подчиненной таблицы
__Michelle
Код: sql
1.
2.
UPDATE TsKlientTorg SET klSum = DSum("trCena*trKol","TsTorg","klID=" & klID)
WHERE klID=<Id конкретного магазина>;

И все будет быстро.
Вот это WHERE не совсем понял. Не могли бы разъяснить?
...
Рейтинг: 0 / 0
13.07.2016, 15:06
    #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
13.07.2016, 19:12
    #39273377
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление поля главной таблицы из статистики подчиненной таблицы
__Michelle,

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

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

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

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

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

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


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