powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как просуммировать строки в запросе
76 сообщений из 76, показаны все 4 страниц
как просуммировать строки в запросе
    #39555602
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добр ночи. Помогите, пожалуйста - не получается в запросе просуммировать строки. БД прилагаю. И прилагаю вид запроса, каким хотелось бы его получить. Заранее благодарен. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555603
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас приложу БД
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555607
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сгруппирой по Пациент, ДатаОперации
и выведи sum(ИнфузияСписок_мл)
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555609
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT Пациент.ФИО, Операция.ДатаОперации, Sum(Инфузия.ИнфузияСписок_мл) 
FROM Пациент INNER JOIN (
(ИсторияБолезни INNER JOIN Операция ON ИсторияБолезни.КодИсторииБолезни = Операция.ИсторияБолезни) 
INNER JOIN (Инфузия INNER JOIN ИнфузияСписок ON Инфузия.ИнфузияСписок = ИнфузияСписок.ИнфузияСписок) 
ON Операция.КодОперации = Инфузия.КодИнфузии) 
ON Пациент.КодПациента = ИсторияБолезни.Пациент
GROUP BY Пациент.ФИО, Операция.ДатаОперации;
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555662
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, спасибо большое за вариант! Извиняюсь, а можно построителем? ну или макросом. Я просто в программировании не силен :) С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555695
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перейди в режим SQL и вставь текст
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555769
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, ну или можно попросить прописать это прямо в запросе в моем примере. Ну не силен я в программировании. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555770
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, спасибо, попробую
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555804
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, вставил и получилось! Идеально! Спасибо большое! Но, как только я дальше ввел поле для подсчета cevvfhyjq инфузии на 1 кг веса, вновь запрос выглядит не группированным. Полез изучать SQL, но если поправите запрос в приложенной БД, чтобы он вновь был сгруппированным, буду признателен. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555888
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите это (сделал как понял) таблицы,формы,запросы с префиксами тбл,ф,з
если не правильно понял-поясните (отсюда не видать, что Вы хотите)
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39555889
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
виноват-вот "причёсанная"
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39556490
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, спасибо большое! Но- напугали. Мне казалось, что в мой запрос всего-то нужно добавить одно вычисляемое поле типа инфузия_мл/вес AS ml/kg, а группировку оставить прежней. Штудирую материалы по SQL Access, как это сделать. Мне-то попроще нужно, чтобы в случае чего сам мог бы править. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39556728
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123,
А Вы подумайте:если в запрос с группировкой(где есть поля с суммированием или любой другой групповой операцией) добавить поле код,в котором нет одинаковых записей, и вся группировка кончится-вот и Вы хотите в группировку по названию препарата добавить поле с расчетом количества препарата(расчет не имеющий ничего общего с подсчетом общего количества препарата. В вашем должна оказаться только цифра показывающая сколько всего израсходовано данного препарата на пациента,без поля фамилия и после суммирования по этому полю получится запрос с 1 итоговой строкой)-ну и как быть железяке по имени РС, если Вы хотите что она произвела взаимоисключающие действия.
Я не хотел Вас пугать
Быстро только кошки родятся (Ильф и Петров)
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557245
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, изучаю SQL, перечитал кучу материалов по Join и там схемы написания кода отличаются от выполненного Вами.

Написал код по литературе. Работает (что меня удивило).

Можно вопрос (он, понимаю, по недостаточному знанию): почему работает код, написанный мной следующим образом?

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

Какой-то, видимо, есть подводный камень в Вашем варианте? Таблицы во From и информация в ON сгруппированы сложнее? Какие принципы я нарушил, и что в моем варианте неправильно?

Спасибо. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557250
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123982183, изучаю SQL, перечитал кучу материалов по Join и там схемы написания кода отличаются от выполненного Вами.
Вариантов может быть масса.
Pol123Написал код по литературе. Работает (что меня удивило).
Чему тут удивляться. Не дураки же учебники писали.

Pol123Можно вопрос (он, понимаю, по недостаточному знанию): почему работает код, написанный мной следующим образом?
А почему он не должен работать.

Pol123Какой-то, видимо, есть подводный камень в Вашем варианте?
Это был самый простой вариант.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557252
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ я твои связи не трогал.
Я добавил Sum в Sum(Инфузия.ИнфузияСписок_мл)
и GROUP BY Пациент.ФИО, Операция.ДатаОперации;

Остальное это твоё творчество.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557254
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вопрос в том, чем отличается

Код: sql
1.
2.
3.
4.
5.
6.
FROM Пациент 
INNER JOIN ((ИсторияБолезни 
INNER JOIN Операция ON ИсторияБолезни.КодИсторииБолезни = Операция.ИсторияБолезни) 
INNER JOIN (Инфузия 
INNER JOIN ИнфузияСписок ON Инфузия.ИнфузияСписок = ИнфузияСписок.ИнфузияСписок) 
ON Операция.КодОперации = Инфузия.КодИнфузии) ON Пациент.КодПациента = ИсторияБолезни.Пациент



от
Код: sql
1.
2.
3.
4.
FROM (((Пациент INNER JOIN ИсторияБолезни ON Пациент.КодПациента = ИсторияБолезни.Пациент)
 INNER JOIN Операция ON ИсторияБолезни.КодИсторииБолезни = Операция.ИсторияБолезни)
 INNER JOIN Инфузия ON Операция.КодОперации = Инфузия.КодИнфузии)
 INNER JOIN ИнфузияСписок ON Инфузия.ИнфузияСписок = ИнфузияСписок.ИнфузияСписок 



то я пас.
Глаза разбегаются.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557255
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183Остальное это твоё творчество.
Точнее сказать творчество конструктора запросов.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557845
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, спасибо большое!
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557937
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, в суммирующий запрос, созданный с Вашей помощью, я добавил поле "вес", а затем поле суммарной инфузии поделил на этот вес (в построителе). Запрос работает и все отображается. Но каждый раз выскакивает сообщение об ошибке, запрашивающее ввести значение суммарной инфузии. Я просто жму каждый раз ОК и запрос отображается. Отображается, вроде, правильно. Но если запрашивает, значит что-то я сделал неправильно? Подскажите, пожалуйста, что нужно поправить, чтобы все работало без этого сообщения об ошибке. Спасибо. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557977
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В выражении
Код: sql
1.
[Sum-ИнфузияСписок_мл]/[Вес]



Нет такого поля "Sum-ИнфузияСписок_мл"
не определены таблицы, из которых берутся данные полей.
Поэтому ACCESS и пытается запросить значение.
Видимо данные поле есть в нескольких таблицах.
Укажи перед полем имя таблицы
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557978
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вру.
У тебя формируется в этом же запросе поле Sum(Инфузия.ИнфузияСписок_мл) AS [Sum-ИнфузияСписок_мл]
Правильно было бы :вместо
[Sum-ИнфузияСписок_мл]/[Вес]
написать
Sum(Инфузия.ИнфузияСписок_мл)/ (ИсторияБолезни.Вес)
Но это тебе не поможет.
Ибо непонятно зачем ты группируешь по этому значению.
+ я не уверен что возможна группировка по таким образом вычисляемому значению (но скорее всего она тебе просто не нужна)
Попробуй на русском языке, обычными словами, сформулировать конечный результат.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39557979
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрал данное выражение из группировки - вывелся некий результат без запроса.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39558656
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, спасибо большое за помощь! Я хоть понял, куда смотреть и где искать:) С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39558660
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, а простыми словами - нужно сумму инфузии, которая получается в запросе после суммирования значений по каждой операции, поделить на вес пациента. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #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
как просуммировать строки в запросе
    #39560978
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123, точно! Я просто не понял Вас и думал, что для Вас это очевидно. С ув. Юрий
Вопрос не в том, что очевидно для меня, вопрос в том, что очевидно для тебя.
Pol123, причина-то мне понятна - мой неправильный код SQL.
Подход неправильный. Тебе надо понять ПОЧЕМУ.
Pol123Но как написать правильный?
Упростить БД до двух таблиц (а может быть и одной), написать работающий код,
потом постепенно добавлять таблицы, добиваясь работоспособности кода..
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39560984
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ обрати внимание на то, что "потери" отличаются не в 4, а в 5 раз.
Сравни эти значения с количеством строк данного пациента в таблицах "потери" и "инфузия"
Сделай вывод о зеркальности коэффициентов.

Заведи базу с тремя таблицами.

БАК - код бака.
Залито - код бака, залито(Л).
Слито - код бака, слито(Л).

Попробуй выдать запрос:
код бака, литров залито, литров слито.

Потом добавь в таблицу БАК поле "название бака" и сделай запрос
Название бака, литров залито, литров слито.
Потом добавь поле Дата в таблицы "залито" и "слито"
и т.д.

Я другого способа НАУЧИТЬ не знаю.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39561320
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При связи таблицы "Операции" с таблицами "Инфузия" и "Потери" по коду операции, происходит перебирание всех записей "Инфузия" и "Потери" между собой, т.к. коды связи для этих двух таблиц одинаковы.
Например есть 2 записи инфузии и 3 записи потери. Ожидаемый эффект 2 строки с записями из обеих таблиц, третья строка только с записью потери. Но получится, что вместо третьей строки выйдут еще две строки, для которых значение потери оставшееся, а значение инфузии ранее использованное.
Для этого и поставлена таблица тип и соответственно столбцы тип потери и тип инфузии. При такой связке выдаются значения отдельной строкой. Но соответственно где есть инфузия, потери приобретают значение "Null". Для того чтобы пробелов не было создаем выражение для кодов операции для последующей связи из одного столбца: если нуль инфузия, значение потери, иначе инфузия.
Возможно есть другие варианты, но у меня дело привычки, поэтому как-то так.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39561659
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikolay_magagin, спасибо большое за ответ. Интуитивно чувствую, что Ваш вариант добротный, но для меня он сложный. Я по своей наивности решил пойти, как мне показалось, простым путем, "подсмотрев кое-что в Вашем варианте": создал запрос "Инфузия", запрос "Потери" и на их основе - запрос "Инфузия минус Потери". Я очень удивился, но запрос правильно считает. Вопрос - что я сделал неправильно? Не может же быть так все просто? БД в приложении. Запрос "Инфузия минус Потери". С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39561662
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikolay_magagin, вот если у кого-либо из пациентов не будет потерь или инфузии, оставляет пустое место. Как я понимаю, нужно ввести какие-то функции IIf is null ? С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39561682
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123Вопрос - что я сделал неправильно? Не может же быть так все просто? БД в приложении. Запрос "Инфузия минус Потери". С ув. Юрий
Я еще раз попробую донести.
Ты перескочил в обучении некий этап.
В результате этого у тебя нет наглядного понимания реляционной теории.
А ты уже начал проектировать БД используя подстановки,
но очевидно не понимая их смысл,
так как ответов на обычные наводящие вопросы от тебя нет.

Данную конкретную проблему тебе помогли решить подзапросами.
Но это пиррова победа.
Ибо для обучения нужно осознание,
которое воспитывается последовательным решением задач с нарастающей сложностью,
а не решением конкретной задачи.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39561689
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начни хотя бы с c http://www.sql-ex.ru/
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39561753
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты создал запрос со связями один-к-одному "Инфузия","Потери" с "Операция". В данном случае данные будут отражаться, только если заполнены любые данные по одинаковому коду операции в таблицах "Инфузия","Потери". Грубо получилось условие для запроса: выводить все строки где код операции совпадает во всех трех таблицах.
Можно идти и по такому пути, но при заполнении данных например инфузии, обязательно заполнять данные потери например значением 0. В последующем надо помнить, что при появлении значения потери этот 0 надо переправить, иначе он будет сидеть в выражении всегда.
При связи один-ко-многим идет перебирание всех значений по коду связи. Поэтому я и ввел код тип "Инфузия-Потери", который ограничил количество перебираний значений.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39562263
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikolay_magagin, касательно нулевого значения, я ввел Nz([];0) и запрос, вроде, считает правильно. Правильно-ли я все сделал? С ув. Юрий PS С Вашими советами у меня уже что-то получается :)
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39562264
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, спасибо за ссылку. Я, конечно, пробую читать что-то по SQL, но, не скрою, не хватает времени. Посему и пробую создавать БД с простыми (если хотите, - примитивными) подходами, мне понятными, чтобы в случае какого-либо сбоя я мог бы сам все исправлять. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39562277
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая задача у тебя стоит?
Учебная или практическая?
Область работы/учебы.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39562844
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, задача практическая. Я занимаюсь анестезией и интенсивной терапией в высоко-рисковой хирургии. Область медицины очень сложная, специалистов очень не много. Опыт накапливается большой и нужен анализ происходящего. В нашей медицине с цифрами и анализом очень плохо. А мне нужен четкий анализ нашей огромной работы, причем - в цифрах. Вот и создаю БД, самостоятельно. Раньше работал в Excell, но сейчас массив данных большой и я перешел на Access. Времени на просьбы-уговоры о помощи с разработкой БД и постановку ТЗ (объяснения, согласования...) тратилось очень много. Прикинул - проще самому. Вот и строю БД потихоньку. Первые варианты ушли в мусор, пока не понял принципы построения. В БД больше 100 таблиц, ввод данных - только через формы, с правилами проверки, с масками ввода и пр. для минимизации ошибок ввода. Очень много вложенных форм также для минимизации ошибок ввода. До начала заполнения сейчас изучаю и строю запросы, чтобы увидеть возможные ошибки на этапе разработки. Сейчас вот приходится в SQL вникать.... Вобщем, без помощи специалистов никак, вот и обращаюсь периодически с примитивными вопросами. с ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39563005
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно.
Значит показывай свои первичные документы,
покажи откуда берутся данные для ввода в систему.
После этого спроектируем БД.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39563006
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с другой стороны, если 100 таблиц уже наваяли, то тут советами не отделаться.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39563237
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, спасибо большое за желание помочь! Я ведь уже не рассчитываю на серьезную помощь профессионалов - уж больно много "возни" с задуманной мной БД, Рад буду любому совету. БД, конечно же, вышлю, но сначала малость ее сокращу - уберу однотипные таблицы и формы для облегчения понимания (и мне так неловко будет за размер своего "монстра"). С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39563241
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоть стало понятно направление.
А так непонятно - то ли студент курсовой пишет, то ли еще чего.
Много не обещаю, инструмент не мой, практики нет, но чем сможем, коллективно поможем.
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39563348
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, БД в приложении. Убрал однотипные таблицы и формы (большинство- вложенные). Надеюсь, что вопросов и предложений коррекции будет много. Немного пояснений: 1) Базовая таблица «Пациент» (один пациент – одна запись), 2) Таблица «ИсторияБолезни» (у одного пациента может быть несколько историй болезни), 3) Таблица «ОперацияАнестезия» (в одной истории может быть несколько операций), 4) будет еще таблица "КартаИНтенсивнойТерапии (на одну историю - много карт ИТ), 5) Таблица «HIPEC» (только одна процедура HIPEC на одну операцию, но соединение с таблицей ОперацияАнестезия я сделал 1-ко-многим, т.к. в форму HIPEC мне нужно вложить много форм для ввода данных, и я не знаю, как оно будет работать, если я соединю таблицу ОперацияАнестезия с таблицей HIPEC связью один-к-одному). С ув. Юрий PS Не получается вычислить значение поля "Диурез HIPEC, мл/кг/час" в форме HIPEC (значение веса никак не могу получить для вычисления из таблицы "ИсторияБолезни"
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39564224
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел.
Труд конечно знатный.

Вот так немного нагляднее:
авторНемного пояснений:
1) Базовая таблица «Пациент» (один пациент – одна запись),
2) Таблица «ИсторияБолезни» (у одного пациента может быть несколько историй болезни),
3) Таблица «ОперацияАнестезия» (в одной истории может быть несколько операций),
4) будет еще таблица "КартаИНтенсивнойТерапии (на одну историю - много карт ИТ),
5) Таблица «HIPEC» (только одна процедура HIPEC на одну операцию, но соединение с таблицей ОперацияАнестезия я сделал 1-ко-многим, т.к. в форму HIPEC мне нужно вложить много форм для ввода данных, и я не знаю, как оно будет работать, если я соединю таблицу ОперацияАнестезия с таблицей HIPEC связью один-к-одному).

PS Не получается вычислить значение поля "Диурез HIPEC, мл/кг/час" в форме HIPEC
(значение веса никак не могу получить для вычисления из таблицы "ИсторияБолезни")

Как вы хотите посчитать "Диурез HIPEC, мл/кг/час" (что на что умножать и делить)
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39564769
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, 982183, спасибо за лестную оценку, я старался (хоть и для себя). В БД масса недостатков, например, с точки зрения логичности связи таблиц. Так, таблица «ОперацияАнгестезия» связана с таблицей «HIPEC» связью одни-ко-многим, и это заведомо неправильно, т.к. за одну операцию может быть проведена только одна процедура HIPEC. Пошел на нарушение из-за того, что в форму HIPEC нужно мне вложить довольно много вложенных форм, а как это сделать при связи таблиц «ОперацияАнестезия» и «HIPEC» 1-к-1 я не знаю. А для вычисления "Диурез HIPEC, мл/кг/час" в форме «HIPEC» нужно значение поля «диурез_HIPEC» таблицы «HIPEC» (вводится в поле «Диурез за период HIPEC, мл» в форму «HIPEC») поделить на вес пациента (поле «ВесПоступ_кг» из таблицы «ИсторияБолезни») и поделить на длительность процедуры HIPEC (поле ДлитHIPEC,мин таблицы HIPEC в часах; последнее не сложно). На вес поделить проблема. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39564770
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, на длительность поделить не сложно (Диурез и длительность в одной таблице/форме HIPEC). На вес поделить сложно - вес из другой таблицы, причем не связанной непосредственно с таблицей/формой HIPEC. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39564772
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, о наглядности - я просто не умею так красиво и наглядно копировать и вставлять в форум :)
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39567187
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123Так, таблица «ОперацияАнгестезия» связана с таблицей «HIPEC» связью одни-ко-многим, и это заведомо неправильно, т.к. за одну операцию может быть проведена только одна процедура HIPEC.
Никогда не понимал целесообразность связей 1к1 (Только в случаях слишком большого количества столбцов)
Добавь поля таблицы HIPEC в таблицу ОперацияАнгестезия и не мучайся, если это создает тебе проблемы
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39567189
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol123А для вычисления "Диурез HIPEC, мл/кг/час" в форме «HIPEC» нужно значение поля «диурез_HIPEC» таблицы «HIPEC» (вводится в поле «Диурез за период HIPEC, мл» в форму «HIPEC») поделить на вес пациента (поле «ВесПоступ_кг» из таблицы «ИсторияБолезни») и поделить на длительность процедуры HIPEC (поле ДлитHIPEC,мин таблицы HIPEC в часах; последнее не сложно).

Если с промежуточными/составляющими цифрами, то вот так:
Код: sql
1.
2.
3.
SELECT HIPEC.КодHIPEC, HIPEC.диурез_HIPEC, ИсторияБолезни.ВесПоступ_кг, HIPEC.[ДлитHIPEC,мин],
   HIPEC.диурез_HIPEC / ИсторияБолезни.ВесПоступ_кг/ HIPEC.[ДлитHIPEC,мин]
FROM (ИсторияБолезни INNER JOIN ОперацияАнестезия ON ИсторияБолезни.КодИстории = ОперацияАнестезия.ИсторияБолезни) INNER JOIN HIPEC ON ОперацияАнестезия.КодОперацииАнестезии = HIPEC.ОперацияАнестезия;
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39570783
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, а как результат этого запроса видеть в форме HIPEC ?
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39570883
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, я справился. Сделал запрос построителем для вычисления диуреза мл/кг/час, в запросе - условие отбора по коду процедуры в форме HIPEC, а в самой форме HIPEC в поле Диурез мл/кг/час - ссылку на поле запроса =DLookUp(" [ДиурезHIPECмл/кг/час]";"[HIPEC_Диурез_мл/кг/час]"). Странно, но получилось и работает. С ув. Юрий
...
Рейтинг: 0 / 0
как просуммировать строки в запросе
    #39578828
Pol123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183, Доброй ночи! С Новым годом! Я с новой просьбой на примере упрощенной БД в приложении. Как сделать так, чтобы в Форме «Операция» не нужно было в поле Учреждение выбирать из списка (кликать курсором) уже присутствующее в этом поле название учреждения? Если не кликнуть уже имеющееся в этом поле название госпиталя, не обновится список Анестезиологов в поле Анестезиолог.
Поясню. Выбор госпиталя в поле Учреждение формы «Операция» определяет список Анестезиологов, работающих в том или ином госпитале (для исключения ошибки ввода).
Если «играться» списком Учреждений и списком Анестезиологов в пределах одной записи (одной операции, например, пациента Пупкина), все получается – при смене госпиталя меняется список анестезиологов. Но проблема состоит в том, что название Учреждения вводится не в эту форму («Операция»), а в форму «ИсторияБолезни», и при создании записи в форме «Операция» хотелось бы чтобы в поле Анестезиолог уже был бы доступен список тех анестезиологов, которые работают в выбранном Учреждении, поскольку Учреждение для записи в форме «Операция» уже предопределено записью с названием госпиталя в поле Учреждение таблицы/формы «ИсторияБолезни».
Поля с Хирургами и Отделениями в форме оставил, чтобы показать, что с этими взаимосвязанными полями все получается. Но с ними легче – эти поля находятся в одной таблице.
Конечно, в крайнем случае можно, поле «Учреждение» перенести из таблицы «ИсторияБолезни» в таблицу «Операция», но это, во-первых, неправильно методологически (поле Учреждение заполняется при оформлении Истории болезни задолго до Операции, которой может и не быть), а во-вторых, - это не совсем профессионально с точки зрения построения БД.
С Новым годом! С ув. Юрий
PS Основные инструменты, которыми все получилось с Хирургами и Отделениями - условие отбора в построителе и макрос на Обновления (вкладка События)
...
Рейтинг: 0 / 0
76 сообщений из 76, показаны все 4 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как просуммировать строки в запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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