powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как просуммировать строки в запросе
25 сообщений из 76, страница 3 из 4
как просуммировать строки в запросе
    #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
25 сообщений из 76, страница 3 из 4
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как просуммировать строки в запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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