0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 14
1

Сложное сложение

15.11.2010, 21:38. Показов 4849. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Очень нужна ваша помощь. 2 этапа сложения.
Этап первый: с помощью запроса нужно просуммировать два столбца, создав третий итоговый (т.е. значения в столбце 1 = 2, значение в столбце 2 = 5, сумма в третьем итоговом = 7).
Этап второй: нужно просуммировать значения строк по итоговому столбцу с одинаковым кодом KODPOL, не создавая новую, а сложив их в одну.
Вопрос 1: Возможно ли это?
Вопрос 2: Возможно ли это в одном запросе?

Пример прикреплен.

Надеюсь, объяснил четко. Если что, задавайте вопросы. Спасибо.
Вложения
Тип файла: rar db1.rar (9.0 Кб, 81 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2010, 21:38
Ответы с готовыми решениями:

Сложное задание
Задание на фото, там по данной БД надо прогу сделать "пропускной пункт предприятия" Access, а...

Сложное условие в запросе
Доброго времени суток!!! Требуется Ваша помощь. есть Форма Назначение для которой выбирается...

Сложное разделение данных из одного поля в несколько
Добрый вечер Господа форумчане, вечер добрый, очень прошу совета. Пользуюсь Access 2010. Дело...

Сложное Д.У.
Помогите решить Д.У. последнее осталось, не знаю как решить 2y' = x + ln(y')

9
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
15.11.2010, 22:25 2
Здравствуйте ghost606.
Вашу задачу суммирования и группировки можно решить с помощью подобной SQL конструкции
SQL
1
2
3
SELECT KODPOL, SUM([Сумма Дополнит]+[Сумма собранных]) AS Общая
FROM Итоговая
GROUP BY  KODPOL;
"..задавайте вопросы.." - поля таблицы/запроса только при табличном отображении могут называться "столбцами", Вы применяете этот термин к SQL конструкции, действительно ли сейчас допускается его использование применительно к полям, Вам так преподают?

Евгений.
1
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 14
15.11.2010, 23:15  [ТС] 3
К сожалению, мне уже не преподают. Приходится постигать все самому. Скажите, пожалуйста, что я неправильно делаю, для того, чтобы отображались и все остальные поля, как в исходной таблице + Сумма Общая?

SQL
1
2
3
SELECT KODPOL, FAM, IMY, SUM([Сумма Дополнит]+[Сумма собранных]) AS Общая
FROM Итоговая
GROUP BY  KODPOL;
Добавлено через 14 минут
SQL
1
2
3
SELECT KODPOL, FAM, IMY, OTCH, DATAR, [Сумма собранных], [Сумма Дополнит], SUM([Сумма Дополнит]+[Сумма собранных]) AS Общая
FROM Итоговая
GROUP BY KODPOL, FAM, IMY, OTCH, DATAR, [Сумма собранных], [Сумма Дополнит];
Если так, то отобразил все поля из таблицы Итого + результат сложения, но теперь складывает только Сумму собранных и сумму дополнит, а по одинаковому KODPOL не хочет. Помогите.

Добавлено через 15 минут
Вопрос снимается. Сам себя запутал. Спасибо за помощь.
0
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
15.11.2010, 23:23 4
ghost606, имя предиката GROUP говорит само за себя - группировка одинаковых значений полей.
А это значит, что группироваться будут только те записи значение полей которых абсолютно одинаково.
Хорошо что поля [Сумма собранных] и [Сумма Дополнит] содержат разные значения в записях,
иначе они бы просто "потерялись" в группировке, а так они отображаются, не верно но отображаются.
конструкция будет соответствовать требованию (выполнять задачу) если её привести к подобному виду:
SQL
1
2
3
SELECT KODPOL, FAM, IMY, OTCH, DATAR, SUM([Сумма собранных]), SUM([Сумма Дополнит]), SUM([Сумма Дополнит]+[Сумма собранных]) AS Общая
FROM Итоговая
GROUP BY KODPOL, FAM, IMY, OTCH, DATAR
Евгений.
1
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 14
20.11.2010, 11:49  [ТС] 5
Спасибо за пояснения. А где прописать условие is not null, чтобы в поле Общая не отображались нулевые суммы?
0
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
20.11.2010, 15:39 6
Здравствуйте ghost606.
"..условие is not null, чтобы в поле Общая не отображались нулевые суммы.." не совсем верно,
NULL это пустота, 0 это значение, нулевое но значение,
функция Sum применяемая в запросе возвращает значение, соответственно и проверять надо не пустоту а значение.
SQL
1
2
3
SELECT * FROM (SELECT KODPOL, FAM, IMY, OTCH, DATAR, SUM([Сумма собранных]) AS S1, SUM([Сумма Дополнит]) AS S2, SUM([Сумма Дополнит]+[Сумма собранных]) AS Общая
FROM Итоговая
GROUP BY KODPOL, FAM, IMY, OTCH, DATAR) T WHERE Общая <> 0
Евгений.
1
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 14
20.11.2010, 18:00  [ТС] 7
В прикрепленном примере все работает, но стоит чуть видоизменив запрос для основной своей базы:

SQL
1
2
3
SELECT * FROM (SELECT KODPOL, FAM, IMY, OTCH, DATAR, SUM(SUMGAZ) AS S1, SUM(DOPGAZ) AS S2, SUM(SUMGAZ+DOPGAZ) AS Общая 
FROM Итого 
GROUP BY KODPOL, FAM, IMY, OTCH, DATAR) T WHERE Общая <> 0
при запуске получаю сообщение о том, что ядро не может найти таблицу или запрос. В примере эту ошибку можно прочесть.

Евгений, подскажите пожалуйста, что не так.
Вложения
Тип файла: rar db2.rar (10.0 Кб, 49 просмотров)
0
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
20.11.2010, 18:24 8
ghost606, в Вашей конструкции две ошибки, одна принципиальная другая техническая (к сожалению MS Access создает вторую сам)
конструкция источника в сохраненном Вами запросе выглядит так:
SQL
1
...FROM [SELECT KODPOL, FAM, IMY, OTCH, DATAR, SUM(SUMGAZ) AS S1, SUM(DOPGAZ) AS S2, SUM(SUMGAZ+DOPGAZ) AS Общая FROM Итого GROUP BY KODPOL, FAM, IMY, OTCH, DATAR; ] AS T ...
1. точка с запятой - необязательный признак конца запроса,установленная в тексте ..OTCH, DATAR; ].. вызывает ошибку.
2. вложенный источник MS Access автоматически при открытии SQL конструкции
обрамляет квадратными скобками ...FROM [SELECT...DATAR ] AS T ...,
замените их на круглые как указано в примере, сохраните запрос и будет Вам счастье.
счастье до следующего открытия в режиме конструктора, после которого необходимо будет вновь изменять скобки.

Успехов Вам.
Евгений.
0
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 14
20.11.2010, 18:32  [ТС] 9
Все эти действия мной опробованы, но итог один - ошибка. Access и точку с запятой сам проставляет.
0
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
20.11.2010, 19:19 10
вариант решения один, "обмануть" MS Access двумя запросами.
Сохраните "вложенный источник" как отдельный запрос и используйте его в качестве источника для текущего запроса:
SQL
1
SELECT * FROM Запрос1 WHERE Общая <> 0
и счастье действительно будет.
Евгений.
0
20.11.2010, 19:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2010, 19:19
Помогаю со студенческими работами здесь

Сложное уравнение
Разбор Если a=c и b=d или a=0 и b&lt;&gt;0, то уравнение не имеет решений. Если a=0 и b=0, то уравнение...

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

While do и сложное ветвление
кусок кода i:=1; while i&lt;=5 do begin if (a mod 2) = 0 then begin chet:=chet+1; s:=s+a end...

Сложное задание
Доброе утро, уважаемые программисты. Попалась очень сложная задачка на С++. Не могу даже понять,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru