вычисление общей суммы денег до указанной даты с помощью запроса MySQL - PullRequest
1 голос
/ 06 июля 2011
                   membership table
                         membership start date 2011-01-10
                         membership end date 2012-09-08
                         membership monthly amount £120.00
                         member_Id

                    member table
                       member_id

участник будет выплачивать деньги 10-го числа каждого месяца ... могу ли я получить общую сумму, которую участник заплатил до этой даты 2011-05-15 и возможно ли это с помощью запроса mysql.

это SQL-запрос, предложенный вами, ребята

                    SELECT TIMESTAMPDIFF(MONTH, membertomships.memberToMship_StartDate, MIN(membertomships.memberToMship_EndDate,'2011-7-06'))* memberToMship_ChargePerPeriod FROM membertomships WHERE membertomships.member_Id = '1';

, но он давал ошибку в memberToMship_EndDate, '2011-7-06' между датами memberToMship_EndDate и этой датой '2011-7-06 '

Не могли бы вы объяснить, почему он выдавал ошибку

Ответы [ 3 ]

1 голос
/ 06 июля 2011
SELECT TIMESTAMPDIFF(MONTH, start_date, MIN(end_date,'2011-05-15')) * amount from membership where membershipId=@memberdshipId

для включения текущей даты также .......

 SELECT TIMESTAMPDIFF(MONTH, start_date, MIN(end_date,'2011-05-15')) * amount ,TIMESTAMPDIFF(MONTH, start_date, MIN(end_date,CURDATE())) * amount from membership where membershipId=@memberdshipId

для меня это нормально работает в ms sqlserver, пожалуйста, измените синтаксис mysql

select datediff(Month,startdate,enddate)*amount as Enddateamount,
datediff(Month,startdate,'12/6/2010')*amount as amountongivendate,
datediff(Month,startdate,getdate())*amount as amounttoday
 from membership

sql server screen shot

0 голосов
/ 06 июля 2011

Полагаю, у вас есть только данные подписки, а не все таблицы платежей, верно? Тогда вам нужно такое утверждение

SELECT TIMESTAMPDIFF(MONTH, '2011-01-10', MIN('2012-09-08', '2011-05-15')) * 120.00

Конечно, вы должны заменить константы именами столбцов и параметрами.

Это, конечно, предполагает, что день оплаты 10 зависит от даты начала подписки, и клиент заплатил вовремя. :)

0 голосов
/ 06 июля 2011

Ваш вопрос не очень ясен, я не думаю, что вы правильно объяснили схему.Если вы хотите получить сумму всего, что заплатил каждый:

select sum(amount) from membership group by member_id

Не стесняйтесь добавлять предложение where, если вы хотите ограничить его датой или member_id:

http://dev.mysql.com/doc/refman/5.0/en/select.html

...