powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Суммирование данных по строке SQL Access
25 сообщений из 27, страница 1 из 2
Суммирование данных по строке SQL Access
    #39511147
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите пожалуйста как правильно реализовать суммирование данных в таблице Access по строке с добавлением суммы в конкретную ячейку?

Таблица имеет к примеру следующий вид:

||Model||Total_Model||USA||Canada||Mexico||...etc.
||Mers || 100 || 40 || 50 || 10 ||
||BMW ||
||WMB ||

Вношу данные в таблицу по запросу:

Form11.ADOTotalOrder.SQL.Clear;
Form11.ADOTotalOrder.SQL.Add('UPDATE AutoMobile');
Form11.ADOTotalOrder.SQL.Add('SET '+Form11.DBLookupComboBox1.KeyValue+' = '+Form11.Edit1.Text+',');
Form11.ADOTotalOrder.SQL.Add('WHERE Model LIKE "'+Form11.DBLookupComboBox2.KeyValue+'"');
Form11.ADOTotalOrder.ExecSQL;

где - Form11.DBLookupComboBox1.KeyValue - Название страны в столбце
- Form11.Edit1.Text - кол-во конкретной модели машин в выбранной стране
- Form11.DBLookupComboBox2.KeyValue - Модель машины

Данный запрос работает. Добавил в него такую строчку

Form11.ADOTotalOrder.SQL.Add(' Total_Model = (SELECT '+Form11.DBLookupComboBox2.KeyValue+' SUM(USA, Canad, Mexica) FROM AutoMobile)');

Выдает ошибку в правильности формирование запроса - Syntax error in query expression '(Select BMW SUM(USA, Canad, Mexica) FROM AutoMobile)'

Понимаю, что неправильно создал запрос, подскажи пожалуйста как сделать его корректным или может есть другой вариант решения.

Спасибо
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511153
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что то типа такого


Модель Всего США Канада Мексика ...
Мерседес 5 1 2 2
БМВ 10 4 5 1
Форд 15 10 3 2
...
Всего 30 15 10 5
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511170
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo,

для того, чтобы таблица выглядела так,
надо ввести ** квадратную скобку [ перед буквами CSV --
столбики разделены обратным слешем
Модель Всего США Канада Мексика ...Мерседес 5 1 2 2БМВ 10 4 5 1Форд 15 10 3 2...Всего 30 15 10 5

**CSV=\]Модель \Всего \США \Канада \Мексика ...
Мерседес \5 \1 \2 \2
БМВ \10 \4 \5 \1
Форд \15 \10 \3 \2
...
Всего \30 \15 \10 \5[/CSV]
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511236
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Спасибо за совет, так конечно лучше смотрится. Только вот это никак не решит мою проблему ;)
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511241
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo,

у вас видимо делфи, но что вы хотите получить строкой
автор(Select BMW SUM(USA, Canad, Mexica) FROM AutoMobile)'


могу предположить что сумму BMW трех стран

тогда
Код: sql
1.
2.
Select  SUM(USA + Canada + Mexico) FROM AutoMobile
 where model="BMW"



если часть цифр отсутствует, то запрос будет посложнее(придется проверять на NULL
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511242
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo,

ИЛИ
Код: sql
1.
2.
3.
UPDATE AutoMobile
 SET [TOTAL_MODEL]=(USA + Canada + Mexico)
  where model="BMW"
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511243
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так (см.отчет1):
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511324
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс..ошибочка вышла-заметил только щас.Вот правильно:
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511326
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой вариант работает, но не совсем корректно

UPDATE AutoMobile
SET [TOTAL_MODEL]=(USA + Canada + Mexico)
where model="BMW"

а именно
Модель | Всего | США | Канада | Мексика ... Мерседес | 123 | 1 | 2 | 3

не суммирует
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511332
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Спасибо за отчет. Для начала по пробую разобрать его на бумаге.
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511344
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не тот файл приложил-пора спать-это окончательно:
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511698
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

подскажите, в таблице "дляПерекрестного" 0 и 1 в столбце Expr1000 - автоматически присваивается или Вы вручную внесли?
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511883
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo,
"дляПерекрестного" это не таблица, а запрос на объединение и если Вы посмотрите SELECTы входящих в него запросов увидите что первое поле одного запроса =0, а другого =1 (это поле нужно для сортировки в дальнейшем, не важно какими будут значения этих полей,главное чтоб они расположили записи в нужной последовательности, при сортировке)
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39511911
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

просто от не знания думал, что такой синтексис с 0 и 1 нельзя, ок ясно.

Подскажите, а такой вариант возможен:
1-ая таблица - 1-й столбец Model (с перечнем моделей), 2-й Сумма - тут общая сумма по модельно.

2-ая таблица - 1-й столбец Country (с перечнем стран), 2-й Сумма - тут общая сумма по странам.

3-я таблица тут по модельной и по странам указано количество
Модель, Страна, Кол-во
БМВ, США, 88
Форд, Канада, 44
Мерс, Мексика, 22
БМВ, Канада, 55
БМВ, Мексика, 5
Форд, США, 99
Мерс, США, 77
....
Всего

и с этой таблицы взять сумму.

И потом составить SQL запрос и получить
Модель Всего США Канада Мексика ...Мерседес 5 1 2 2БМВ 10 4 5 1Форд 15 10 3 2...Всего 30 15 10 5
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39512348
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Спасибо большое, разобрался, научился, получилось.
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39512387
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo,
не надо дублировать уже имеющиеся данные путем создания доп.таблиц(или Вы имели ввиду запросы-выражайтесь точнее)
и разве это не то,что Вы хотите видеть?
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39512484
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Да Вы не подсказали правильно решение. Но вот столкнулся теперь с проблемой - ну для меня по крайней мере.
Предположим мне надо будет добавить клиента.
Программа - открывается форма и пользователь заводит нового клиента.
И как тогда быть?
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39512485
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxseosdku,

Да Вы мне подсказали правильно решение. Но вот столкнулся теперь с проблемой - ну для меня по крайней мере.
Предположим мне надо будет добавить клиента.
Программа - открывается форма и пользователь заводит нового клиента.
И как тогда быть?
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39512487
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Получается мне надо сначала перебрать все вариант по модельно для этого клиента по базе - производитель, правильно?
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39512533
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo,
в перекрестном запросе столбцы добавятся автоматически
будем говорить об этом примере 20752565
-для таблицы "производитель" я форму не делал(это уж сами). Прямо в таблицу добавьте запись:марка=1,производство="п4"-в полеСоСписком "произведено" для марки BMW-222 появится вновь добавленный производитель "п4"
-занесите в форму новую запись для этой марки и производителя, запустите запрос "перекрестный"-в нем появился новый столбец с именем "п4"
-по мере появления новых производителей(занесения их в таблицу "производитель") и создания записей, для этого производителя, через форму (в таблице) "поступило" столбцы в запросе добавятся автоматически
-короче:добавляете производителя,создаете для него запись, в запросе появляется столбец с его именем
Разбирайтесь,дорабатывайте под себя.Удачи
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39512535
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ничего не получится (уже задействованы клиенты) приложите БД (нужны данные-сам придумывать не буду), что наработали и четко изложите что хотите получить
помогу,но только завтра или уже сегодня - в общем 30.08 днем
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39516737
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Добрый вечер! Только вот не давно получилось отписаться.

С БД Access работает посредством программы на Delphi. Когда заполняю форму поступления
- Выберете Страну - (DBLookComboBox1)
- Выберет Модель - (DBLookComboBox2)
- Введите Кол-во - (Edit1)

Если я выбираю ранее заведенные страны и модели то добавление и суммирование проходить ок.
Если создаю и потом выбираю новую страну и модель то строка с моделью добавляется и значение тоже, а вот столбец страна нет.
Как пример:
Модель Всего США Канада Мексика ...Мерседес 5 1 2 2БМВ 10 4 5 1Форд 15 10 3 2Новая модель10.........Всего 30 15 10 5

при это стоит только запрос Access, который формирует данную таблица обновить и нажать на кнопку выполнить, то столбец появляется сначала в запросе Access
TRANSFORM Sum([Cars Запрос].Quantity) AS [Sum-Quantity]
SELECT [Cars Запрос].Name_Auto, Sum([Cars Запрос].Quantity) AS [Sum-Quantity1]
FROM [Cars Запрос]
GROUP BY [Cars Запрос].Name_Auto
PIVOT [Cars Запрос].Name_C;

и соответственно столбец появляется в DBGrid.

Возможно надо сделать запрос на автоматическое обновление? Не подскажите есть такая возможность в Access
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39516864
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo,
Для таблиц марка и производитель я форм не делал (оставил это для Вас)
Порядок заполнения таблиц(форм которые Вы создадите):марка>производитель (так называемые справочники)>поступило-если добавить новую марку или производителя для уже присутствующей в перечне марки,то эти значения появятся в соответствующих поляхСоСписком формы "поступило"-строки при добавлении марки и столбцы при добавлении производителя появятся автоматически.
Пример:по этой БД 20752565
-добавьте запись в тбл."марки"-Лада
-в тбл."производители"добавьте:поле марка-5(код записи в тбл.марка для Лада),производитель-п4
-занесите в форму поступило запись:марка-Лада,производитель-п4,количество-от1 до 32000, сохраните запись сочетанием клавиш,перейдя на любую другую или закрыв форму
-запустите запрос перекрестный-добавилась строка Лада и столбец п4
Не изобретайте велосипед-все придумано до нас
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39517260
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Добрый день!

Спасибо за разъяснение, я точно так и делаю и все работает. Меня интересует вот что - авторзапустите запрос перекрестный-добавилась строка Лада и столбец п4, а как сделать автоматическое обновление запроса перекрестный? Так в с программой будут работать несколько пользователей и получаются, что они мне говорить мы добавили например клиента, товар, ... и мне надо перезапустить запрос перекрестный и тогда все появляется. Автоматически я понимаю это реализовать нет возможности
...
Рейтинг: 0 / 0
Суммирование данных по строке SQL Access
    #39517334
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или как вариант может есть такая возможность создать условие если добавлена новая страна, то выполнить запрос перекрестный.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Суммирование данных по строке SQL Access
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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