Приветствую всех. Понемногу начал осваивать Access - подкинули БД, теперь ковыряюсь. Сейчас пытаюсь решить такую задачу. Есть БД в которую вносятся, скажем, суммы, которые человек должен заплатить. Вносятся в таблицу TablDolg. Есть таблица TablIn, в которую вносятся суммы частичной оплаты. И есть таблица TableName с базой этих людей. Задача в том, чтобы суммировать все заплаченные деньги с момента взятия долга по настоящее время, либо по дату взятия следующей суммы долга, если был взят второй долг. Т.е. в запросе должно быть так: ФИО, взятая сумма, дата этой суммы, уплаченная сумма за описанный выше период, остаток долга. Не могу реализовать подсчёт суммы за период с отображением его в запросе. Пример БД приложен.
Приветствую всех. Понемногу начал осваивать Access - подкинули БД, теперь ковыряюсь. Сейчас пытаюсь решить такую задачу. Есть БД в которую вносятся, скажем, суммы, которые человек должен заплатить. Вносятся в таблицу TablDolg. Есть таблица TablIn, в которую вносятся суммы частичной оплаты. И есть таблица TableName с базой этих людей. Задача в том, чтобы суммировать все заплаченные деньги с момента взятия долга по настоящее время, либо по дату взятия следующей суммы долга, если был взят второй долг. Т.е. в запросе должно быть так: ФИО, взятая сумма, дата этой суммы, уплаченная сумма за описанный выше период, остаток долга. Не могу реализовать подсчёт суммы за период с отображением его в запросе. Пример БД приложен.drugojandrew
Есть таблица TablIn, в которую вносятся суммы частичной оплаты
В этой таблице не хватает данных по какому долгу из TablDolg была выплачена сумма. Без этого угадайка, плюс тормоза в вычислениях. Пусть у человека две суммы займа в TablDolg. По его выплатам в TablIn мы может конечно узнать сколько он выплатил по первому более раннему долгу до даты второго займа. Но что, если он ещё не расплатился с первым долгом, тогда куда относить суммы, поступающие в TablIn после даты второго займа? При таких входных данных можно быстро лишь однозначно узнать какую сумму ФИО взял к текущему дню и сколько к этому дню вернул.
Есть таблица TablIn, в которую вносятся суммы частичной оплаты
В этой таблице не хватает данных по какому долгу из TablDolg была выплачена сумма. Без этого угадайка, плюс тормоза в вычислениях. Пусть у человека две суммы займа в TablDolg. По его выплатам в TablIn мы может конечно узнать сколько он выплатил по первому более раннему долгу до даты второго займа. Но что, если он ещё не расплатился с первым долгом, тогда куда относить суммы, поступающие в TablIn после даты второго займа? При таких входных данных можно быстро лишь однозначно узнать какую сумму ФИО взял к текущему дню и сколько к этому дню вернул.anvg
Сообщение отредактировал anvg - Пятница, 07.06.2019, 21:40
anvg, эта таблица с произвольно накиданными в неё данными просто для примера. Поэтому там несоответствия по суммам. К тому же в реальности это не долги и не кредиты. Просто взял для примера. Суть вопроса в том, чтобы решить задачу суммирования по диапазону дат, как сказано в первом топике.
anvg, эта таблица с произвольно накиданными в неё данными просто для примера. Поэтому там несоответствия по суммам. К тому же в реальности это не долги и не кредиты. Просто взял для примера. Суть вопроса в том, чтобы решить задачу суммирования по диапазону дат, как сказано в первом топике.drugojandrew
, что бы получить ответ на поставленный вам вопрос. Переформулирую. Вася Пупкин 5.01.2019 вязл 300 и исправно каждый месяц пятого числа возвращал 30. Но 11 мая от взял ещё 100. Седьмого июня он возвратил 40. Куда относится 40 к 300 или 100?
, что бы получить ответ на поставленный вам вопрос. Переформулирую. Вася Пупкин 5.01.2019 вязл 300 и исправно каждый месяц пятого числа возвращал 30. Но 11 мая от взял ещё 100. Седьмого июня он возвратил 40. Куда относится 40 к 300 или 100?anvg
Сообщение отредактировал anvg - Пятница, 07.06.2019, 21:59
В данном примере всё зависит от дат. Т.е. 40 в вашей формулировке относятся к 100, т.к. 40 он возвращает в диапазоне дат от последнего займа по настоящее время. В реальности же он никогда не получит еще 100, пока не вернет 300. В примере суммы накиданы наобум, там несоответствия в суммах.
В данном примере всё зависит от дат. Т.е. 40 в вашей формулировке относятся к 100, т.к. 40 он возвращает в диапазоне дат от последнего займа по настоящее время. В реальности же он никогда не получит еще 100, пока не вернет 300. В примере суммы накиданы наобум, там несоответствия в суммах.drugojandrew
Разбирайте. Запрос СводкаОплатОстатков. Думаю ФИО подтянуть уже сможете. Но, отсутствие с связи по коду долга в TablIn - это чревато проблемами времени выполнения на худо бедно рабочих данных.
P. S. Разбил на подзапросы, чтобы понятнее была логика.
Разбирайте. Запрос СводкаОплатОстатков. Думаю ФИО подтянуть уже сможете. Но, отсутствие с связи по коду долга в TablIn - это чревато проблемами времени выполнения на худо бедно рабочих данных.
P. S. Разбил на подзапросы, чтобы понятнее была логика.anvg
anvg, несколько разобрался. Сделал в своей БД и только потом заметил, что не выводит результат, если в диапазоне дат не было возврата долга. Потратил кучу времени, но так и не смог понять почему. Понимаю, что недочёт где-то в последнем из трёх запросов, но не соображу что именно не так. Поможете? Прикрепил пример, где для первого человека была оплата по долгу, для второго - вообще не платил по долгу, для третьего - взял в долг один раз, затем второй раз, не оплачивая первого, и после второго раза уже оплатил. Не выводится сумма у второго человека и у третьего сумма первого долга (выводится только второй).
anvg, несколько разобрался. Сделал в своей БД и только потом заметил, что не выводит результат, если в диапазоне дат не было возврата долга. Потратил кучу времени, но так и не смог понять почему. Понимаю, что недочёт где-то в последнем из трёх запросов, но не соображу что именно не так. Поможете? Прикрепил пример, где для первого человека была оплата по долгу, для второго - вообще не платил по долгу, для третьего - взял в долг один раз, затем второй раз, не оплачивая первого, и после второго раза уже оплатил. Не выводится сумма у второго человека и у третьего сумма первого долга (выводится только второй).drugojandrew
Задача в том, чтобы суммировать все заплаченные деньги с момента взятия долга по настоящее время, либо по дату взятия следующей суммы долга, если был взят второй долг.
Задача в том, чтобы суммировать все заплаченные деньги с момента взятия долга по настоящее время, либо по дату взятия следующей суммы долга, если был взят второй долг.
что не считает именно то, за что ни разу не было оплачено
Вы не уловили сути проблемы. Если будут оплаты после даты второго взятия долга, то вы оплат по первому долгу никогда не увидите. Сам же долг и его дату данной третьей персоны вы можете увидеть, заменив в запросе СводкаОплатОстатков Inner Join на Left Join - вывод всех значений из TablDolg
что не считает именно то, за что ни разу не было оплачено
Вы не уловили сути проблемы. Если будут оплаты после даты второго взятия долга, то вы оплат по первому долгу никогда не увидите. Сам же долг и его дату данной третьей персоны вы можете увидеть, заменив в запросе СводкаОплатОстатков Inner Join на Left Join - вывод всех значений из TablDolganvg
Если будут оплаты после даты второго взятия долга, то вы оплат по первому долгу никогда не увидите.
Вообще-то вижу. Приложил пример (пробовал и с Inner Join, и с Left Join), где третий оплатил по первому долгу и взял вторую сумму и частично оплатил по ней - видны обе суммы. А у второго не видна, т.к. он вообще не оплачивал. Получается суть проблемы определена верно. Или есть еще что-то, чего я не вижу? P.S.: В примере оставил Inner Join
Если будут оплаты после даты второго взятия долга, то вы оплат по первому долгу никогда не увидите.
Вообще-то вижу. Приложил пример (пробовал и с Inner Join, и с Left Join), где третий оплатил по первому долгу и взял вторую сумму и частично оплатил по ней - видны обе суммы. А у второго не видна, т.к. он вообще не оплачивал. Получается суть проблемы определена верно. Или есть еще что-то, чего я не вижу? P.S.: В примере оставил Inner Joindrugojandrew