Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/76: Рейтинг темы: голосов - 76, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
1

Суммирование по условию

20.03.2013, 16:54. Показов 14430. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В FastReport сделал отчет-накладную на перемещение оборудования. Поля - наименование, ID , количество, номер поставки, дата поставки. Если у оборудования разный ID, то все ок, каждое наименование выводится в отдельной строке.
Хотелось бы сделать так, что если в отчет попадает несколько одинаковых наименований, то чтобы они выводились не каждый в отдельную строку, а в одну и количество ставилось соответствующее. Я так понимаю нужно написать условие и суммирование, но как правильно не знаю, с SQL мало знаком. Кто знает - подскажите пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2013, 16:54
Ответы с готовыми решениями:

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

Суммирование по условию
Здравствуйте! Мне нужно просуммировать данные диапазона ячеек Е3:АН3125 листа "11" при условии...

Суммирование по условию
Есть два листа. На первом листе в столбец указана валюта. На втором столбце указана валютная...

Суммирование по условию
Доброго дня. помогите не могу разобраться((( есть таблица Столбец А = сумма (числовой формат);...

14
2433 / 2285 / 594
Регистрация: 27.05.2011
Сообщений: 7,808
20.03.2013, 17:04 2
MySQL
1
select `наименование` , summ(`количество`)  as `TotalSumm` from `table` group by `наименование`
1
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
20.03.2013, 17:21  [ТС] 3
а если применительно к моему запросу, подскажете? не могу догнать

SELECT t.hwid, h.invoicen, h.invoiced, t.modeln, t.count, t.modelid, a.apvalue1, t.price2, t.amodeln
FROM
tmp t
INNER JOIN hardware h ON (t.hwid=h.hwid)
LEFT OUTER JOIN apmodel a ON (t.modelid=a.modelid)



modeln - это наименование модели
count - количество
modelid - код модели
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
21.03.2013, 17:47  [ТС] 4
дошел до такого

SELECT t.hwid, h.invoicen, h.invoiced, t.modeln,SUM(t.count), t.modelid, a.apvalue1, SUM(t.price2), t.amodeln
FROM
tmp t
INNER JOIN hardware h ON (t.hwid=h.hwid)
LEFT OUTER JOIN apmodel a ON (t.modelid=a.modelid) group by t.modelid

Но выскакивает ошибка SQL: GROUP BY clause is missing or invalid
0
Футболист
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
23.03.2013, 05:10 5
maybe?
SQL
1
ORDER BY
0
2731 / 1812 / 197
Регистрация: 05.06.2011
Сообщений: 5,236
23.03.2013, 06:25 6
Цитата Сообщение от vladgunich Посмотреть сообщение
выскакивает ошибка SQL: GROUP BY
Стоит почитать про групповые запросы. Коротко: берём обычный запрос; дописываем группировку -- group by: записи группируются по одинаковым значениям перечисленных полей; каждой такой группе соответствует одна запись результирующего запроса. В эту запись входят поля из списка group by и групповые функции прочих полей. Стнадартные групповые функции -- count, summ, min, max. Нормальные СУБД позволяют дописывать свои; насчёт MySQL не знаю.
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
25.03.2013, 09:59  [ТС] 7
Цитата Сообщение от Goal Посмотреть сообщение
maybe?
SQL
1
ORDER BY
нет, ошибка та же самая вылетает

Добавлено через 14 минут
а вот если в GROUP BY перечислить все поля, то ошибка пропадает

GROUP BY t.hwid, h.invoicen, h.invoiced, t.modeln,t.modelid, a.apvalue1,t.amodeln

Только запрос не работает так как хотелось бы
0
2731 / 1812 / 197
Регистрация: 05.06.2011
Сообщений: 5,236
25.03.2013, 10:58 8
Цитата Сообщение от vladgunich Посмотреть сообщение
Только запрос не работает так как хотелось бы
Начал было читать твои мысли, но покраснел аж до самых пяток, закашлялся и вынужден был прекратить. Может, изложишь прямым текстом ту их часть, которая касается запроса?
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
25.03.2013, 11:15  [ТС] 9
Ты имеешь в виду чего я жду от запроса? В первом сообщении я описывал что требуется.
Если у оборудования разный modelid, то каждое наименование выводится в отдельной строке.
Хотелось бы сделать так, что если в отчет попадает несколько одинаковых наименований, то есть устройств с одним и тем же modelid, то чтобы они выводились не каждый в отдельную строку, а в одну, и количество ставилось соответствующее и цена суммировалось.
0
2731 / 1812 / 197
Регистрация: 05.06.2011
Сообщений: 5,236
25.03.2013, 11:18 10
А что именно -- с последним запросом -- происходит не так, как бы тебе хотелось?
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
25.03.2013, 11:30  [ТС] 11
Выбрал два одинаковых устройства - они вывелись все равно в разных строках. по моему скромному мнению это происходит из-за того, что там не укальные поля в запросе и нужно составить подзапросом как-то, но повторюсь - в SQL я не силен
0
2731 / 1812 / 197
Регистрация: 05.06.2011
Сообщений: 5,236
25.03.2013, 11:47 12
То бишь, modelid совпали, но что-то другое из списка не совпало. Что именно, глянь.
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
25.03.2013, 12:53  [ТС] 13
там поля
hwid - паспорт(уникальное для каждого устройства)
invoicen - номер накладной
invoiced - дата накладной
modeln - наименование модели
count - количество
modelid - код модели
apvalue1 - доп.параметры устройства
price2 - цена
amodeln - наименование для бухгалтерии

по идее кроме modelid все остальные поля и не должны совпадать. Или тогда группировка не будет работать?
0
2731 / 1812 / 197
Регистрация: 05.06.2011
Сообщений: 5,236
25.03.2013, 13:32 14
Пишу с телефона, возможны глюки. Ну сам посуди: если собрать модель, что ты хочешь видеть в поле, скажем, hwid? Надо эти поля вообще исключить, оставить модель, по которой группировка, и группируемые поля. Остальные убрать в другой запрос и как-то показывать отдельно.
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
25.03.2013, 14:36  [ТС] 15
Скорей всего ты прав, только я так понимаю что по уникальному полю hwid происходит связь таблиц h и t, а так-то в принципе мне и не нужно выводить информацию из этого поля в мой отчет
Результат запроса у меня выводится в таблицу по столбцам - наименование, номер и дата накладной, количество, цена, размер и вес. Если я удалю к примеру из запроса наименование, то я так понимаю что и вывести в таблицу я его не смогу, так?

Добавлено через 59 минут
Я сейчас попробовал убрать из запроса t.hwid и вроде заработало - во всяком случае вывелась одна строка (одинаковых устройств было выбрано два). Теперь осталось придумать как правильно выводить информацию о количестве и сумме. До этого выводилось с помощью [AdoQuery1."t.count"]
0
25.03.2013, 14:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2013, 14:36
Помогаю со студенческими работами здесь

Суммирование по условию
Здравствуйте! Нужна помощь в создании кода. Мне нужно ввести в ячейку определенный интервал....

сложное суммирование по условию
Здравствуйте! Есть у меня задача создать макрос, который будет в банковской выписке определять...

Суммирование ячеек по условию
Друзья, нужна формула через excel, чтоб он суммировал ячейки с условием "а" и условием "б" ну...

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


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

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