powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как просуммировать строки в запросе
25 сообщений из 76, страница 2 из 4
как просуммировать строки в запросе
    #39558664
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123982183, а простыми словами - нужно сумму инфузии, которая получается в запросе после суммирования значений по каждой операции, поделить на вес пациента. С ув. Юрий
Не "сумму инфузии", а "сумму инфузий"
Т.Е. все инфузии пациента делим на его вес.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39558691
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снова вру.
"Сумма инфузий в разрезе операций пациента"
Соответственно группировка должна быть "Пациент" + "Операция"
А у тебя группировка "Фамилия Пациента" + "Дата операции"

На твоем наборе данных это несущественно, но на реальной задаче будет жопа.
Есть и однофамильцы, есть и несколько операций в день

Далее - "Вес" в группировке вещь с одной стороны бессмысленная,
а с другой стороны не надо применять агрегатную функцию при расчете.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39558695
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ в таблице "инфузия" стоит завести ключевое поле, и в "ИнфузияСписок" хранить именно его, а не текстовое значение.
В существующем виде несомненно работает, но сильно некошерно.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39558697
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снова вру

В таблице "инфузияСписок" стоит завести ключевое поле, и в "Инфузия" хранить именно его, а не текстовое значение.
В существующем виде несомненно работает, но сильно некошерно.

+ Сейчас в имеющемся запросе подключение "инфузияСписок" бессмысленно, так как название есть в "Инфузия".
и ты не используешь название препарата в запросе.

+ В "Инфузия" в поле "КодИнфузии" стоит фамилия ????
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559386
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, не все комментарии понял (в смысле - как и что менять), поэтому спрошу: что мне изменить, чтобы получить вот такой результат запроса ? (в приложении) С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559387
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pol123, не приложился
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559467
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, у меня, кажется, получилось! Вот два варианта работающего кода
SELECT Пациент.ФИО, Операция.ДатаОперации, Sum(Инфузия.ИнфузияСписок_мл) AS [Sum-ИнфузияСписок_мл], ИсторияБолезни.Вес, Sum([ИнфузияСписок_мл])/[Вес] AS [мл/кг]
FROM Пациент INNER JOIN ((ИсторияБолезни INNER JOIN Операция ON ИсторияБолезни.КодИсторииБолезни = Операция.ИсторияБолезни) INNER JOIN (Инфузия INNER JOIN ИнфузияСписок ON Инфузия.ИнфузияСписок = ИнфузияСписок.ИнфузияСписок) ON Операция.КодОперации = Инфузия.КодИнфузии) ON Пациент.КодПациента = ИсторияБолезни.Пациент
GROUP BY Пациент.ФИО, Операция.ДатаОперации, ИсторияБолезни.Вес;


SELECT Пациент.ФИО, Операция.ДатаОперации, Sum(Инфузия.ИнфузияСписок_мл) AS [Sum-ИнфузияСписок_мл], ИсторияБолезни.Вес, Sum(Инфузия.ИнфузияСписок_мл)/[Вес] AS Выражение1
FROM Пациент INNER JOIN ((ИсторияБолезни INNER JOIN Операция ON ИсторияБолезни.КодИсторииБолезни = Операция.ИсторияБолезни) INNER JOIN (Инфузия INNER JOIN ИнфузияСписок ON Инфузия.ИнфузияСписок = ИнфузияСписок.ИнфузияСписок) ON Операция.КодОперации = Инфузия.КодИнфузии) ON Пациент.КодПациента = ИсторияБолезни.Пациент
GROUP BY Пациент.ФИО, Операция.ДатаОперации, ИсторияБолезни.Вес;

Мне правильно нужно было использовать скобки! В Select последнее поле
С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559552
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так научись делать:
Код: sql
1.
2.
3.
SELECT Пациент.ФИО, Операция.ДатаОперации, Sum(Инфузия.ИнфузияСписок_мл) AS [Sum-ИнфузияСписок_мл], ИсторияБолезни.Вес, Sum([ИнфузияСписок_мл])/[Вес] AS [мл/кг]
FROM Пациент INNER JOIN ((ИсторияБолезни INNER JOIN Операция ON ИсторияБолезни.КодИсторииБолезни = Операция.ИсторияБолезни) INNER JOIN (Инфузия INNER JOIN ИнфузияСписок ON Инфузия.ИнфузияСписок = ИнфузияСписок.ИнфузияСписок) ON Операция.КодОперации = Инфузия.КодИнфузии) ON Пациент.КодПациента = ИсторияБолезни.Пациент
GROUP BY Пациент.ФИО, Операция.ДатаОперации, ИсторияБолезни.Вес;



Код: sql
1.
2.
3.
SELECT Пациент.ФИО, Операция.ДатаОперации, Sum(Инфузия.ИнфузияСписок_мл) AS [Sum-ИнфузияСписок_мл], ИсторияБолезни.Вес, Sum(Инфузия.ИнфузияСписок_мл)/[Вес] AS Выражение1
FROM Пациент INNER JOIN ((ИсторияБолезни INNER JOIN Операция ON ИсторияБолезни.КодИсторииБолезни = Операция.ИсторияБолезни) INNER JOIN (Инфузия INNER JOIN ИнфузияСписок ON Инфузия.ИнфузияСписок = ИнфузияСписок.ИнфузияСписок) ON Операция.КодОперации = Инфузия.КодИнфузии) ON Пациент.КодПациента = ИсторияБолезни.Пациент
GROUP BY Пациент.ФИО, Операция.ДатаОперации, ИсторияБолезни.Вес;
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559558
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И то херня нечитаемая получилась.
Вот за что ненавижу Access, так это за нечитаемость листинга.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559562
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, спасибо за помощь! Но если с вычислением и группировкой по одному полю в SQL у меня что-то получается, то вот с JOIN и группировкой по двум полям, точно, ерунда какая-то у меня получается. Помогите, пожалуйста, исправить запрос, чтобы суммировалось и группировалось правильно. В приложении в той же БД создал один запрос, но суммируется неправильно. Спасибо. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559563
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты вводишь новые сущности, не поясняя их.
Ставишь задачи, не формализуя их.

"Потери" что это, зачем.
Почему код "потери" связан с "кодом операции"
Почему потеря не связана с инфузией. В ней хранятся мл, но не указан вид лекарства.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559588
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123,
Вам предложена схема БД,но считаете что она сложна,не смотря на то,что все дополнительные "хотелки" в ней осуществимы-в существующей же любая попытка что-либо дополнить вызовет проблемы(да и создание одного запроса вызывает 6 дневные проблемы-хотя создать новую базу,"без красивостей", минут 30-60 и перенести данные,в зависимости от их количества,от 5 до 30 минут-итого 1,5 часа вместо уже убитых 6 дней ( имейте ввиду что группировка в запросе по отдельно взятому полю не возможна-только по всем полям,кроме тех,в которых групповая операция). Если есть желание изложите задачу,желательно подробно.чтоб не было уточняющих вопросов.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559727
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, с операцией связана как инфузия, так и потери, т.к. во время операции имеют место как введение жидкости в организм (инфузия), так и потери жидкости из организма (кровотечение, жидкость из полостей, моча и пр.). Оба параметра (инфузия и потери) приходиться учитывать в лечении. Но еще нужна разница между введенным к-вом жидкости за операцию (инфузия) и выведенным к-вом жидкости за операцию (потери) - так называемый баланс жидкости. И при этом важно знать каков этот баланс в пересчета на кг веса пациента (2 литра для 40-кг пациента - много и опасно, а для 140-кг пациента - не много и не опасно). Вот - суть запроса, который я пытаюсь "смастерить". Буду признателен, если поможете. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39559755
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай сначала.
Захожу в таблицу "ОПЕРАЦИЯ"
Код: plaintext
1.
2.
3.
КодОперации	ИсторияБолезни	ДатаОперации
1	иванов	01.11.2017
2	петров	02.11.2017
3	сидоров	03.11.2017

Захожу в таблицу "ПОТЕРИ"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
КодПотери	ПотериСписок	ПотериСписок_мл
петров	БрюшПолость	400,00
петров	Диурез(уретра)	200,00
иванов	ЖелудЗонд	300,00
иванов	НефростомаЛев	100,00
иванов	НефростомаПрав	150,00
сидоров	ПлеврПолость	200,00
иванов	Повязки	100,00
петров	Рвота	200,00
сидоров	ЭпицистоСтома	200,00

Причем
Операция.КодОперации=Потери.КодПотери
Но в "Операция" цифры, а в "Потери" фамилии.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560194
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, я не понимаю, что Вы хотите сказать (я SQLем-то 2 недели, как пользуюсь). Мне бы получить запросом результат следующего вида: ФИО пациента ! Вес пациента ! Дата операции ! Сумма инфузии за операцию ! Сумма потерь за операцию ! Разница инфузии и потерь за операцию ! мл/кг. Мне показалось, что Вы в коде поправите суммирование, JOIN и группировку, и все получится. Я сам с этими JOINами не справлюсь, т.к. в в объединяемых таблицах разное кол-во строк в полях Инфузия и Потери для суммирования. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560196
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, если запрос с JOINом делать только по одному полю (или только по Потерям или только по Инфузии), я справляюсь. И Вы научили, и в лит-ре масса примеров. Но по двум полям разных таблиц не получается. То ли JOINы не те и не так использую, то ли подзапросы не могу ввести, то ли еще что .... С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560241
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123Помогите, пожалуйста, исправить запрос, чтобы суммировалось и группировалось правильно.
Какая конкретно цифра тебе не нравится?
Какую цифру ты считаешь неправильной?
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560267
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123Но по двум полям разных таблиц не получается. То ли JOINы не те и не так использую, то ли подзапросы не могу ввести, то ли еще что .... С ув. Юрий
Так таблиц у тебя СЕМЬ.
И соответственно решать надо не простейшие вопросы с запросами.
А более фундаментальные вещи, связанные с проектированием БД и с их нормализацией,
с ключами таблиц и их связями.
Слишком большая/сложная/объемная у тебя структура данных для учебного примера этого(начального) уровня.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560685
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотри может поможет. Переход в отчете по номеру №.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560948
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, Вы спросили: «Какая конкретно цифра тебе не нравится? Какую цифру ты считаешь неправильной?»
Неправильные получаются цифры в моем запросе, а именно – с ошибкой суммируются потери и инфузия. А запрос хотел получить такого вида: ФИО пациента ! Вес пациента ! Дата операции ! Сумма инфузии за операцию ! Сумма потерь за операцию ! Разница инфузии и потерь за операцию ! мл/кг
С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560949
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikolay_magagin, спасибо большое! Работа - неожиданно огромная! Вы точно поняли, что я хотел получить своим запросом. Пошел изучать Ваш вариант. Изучать на предмет, смогу ли адаптировать к своей БД, т.к. вижу, что Вы изменили поля таблиц... Буду пробовать. Спасибо еще раз! С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560960
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123982183, Вы спросили: «Какая конкретно цифра тебе не нравится? Какую цифру ты считаешь неправильной?»
Неправильные получаются цифры в моем запросе, а именно – с ошибкой суммируются потери и инфузия. С ув. Юрий

Вообще то я хотел получить от тебя ответ типа:
Иванов
Фактическая инфузия - 1900
инфузия в запросе - 7600

Отсюда надо сделать вывод, что увеличение в 4 раза.
А после этого искать причину.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560968
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikolay_magagin, посмотрел Ваш вариант, спасибо большое! Итог запроса - как я и хотел. Но, я извиняюсь, есть два вопроса: 1) можно ли в таблицах Инфузия и Потери обойтись без поля Тип? и 2) можно ли обойтись без добавленных Вами поля [Код_операции_инфузии] в таблице Инфузия и без поля [Код_операции_потери] в таблице Потери? Вопрос обусловлен моим начальным уровнем и желанием упростить свою БД. Еще раз извиняюсь за вопросы. С ув. Юрий. PS В приложении - Ваша вариант, в котором я ввел данные для удобства оценки результата запроса, и оставил нужные мне формы в планируемом мной виде (вложенные формы)
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560969
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, точно! Я просто не понял Вас и думал, что для Вас это очевидно. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560970
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, причина-то мне понятна - мой неправильный код SQL. Но как написать правильный?
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 2 из 4
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как просуммировать строки в запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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