2011-07-06 89 views
1
    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查询。使用mysql查询计算提款日期前的总金额

这是你们

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

建议的SQL查询 但它在memberToMship_EndDate日期memberToMship_EndDate和此日期“2011年7月6日”

之间给错误,“2011年7月6日”

你会说明为什么它给错误

+0

如果这个问题不清楚请亲密我.. – user682417

+1

曾听说[WHERE](http://dev.mysql。 com/doc/refman/5.0/en/select.html)子句或[SUM](http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_sum)函数? – Jacob

+0

你的意思是他们迄今为止付过多少钱? – Raoul

回答

1
SELECT TIMESTAMPDIFF(MONTH, start_date, MIN(end_date,'2011-05-15')) * amount from membership where [email protected] 

对包括当前的日期也.......

SELECT TIMESTAMPDIFF(MONTH, start_date, MIN(end_date,'2011-05-15')) * amount ,TIMESTAMPDIFF(MONTH, start_date, MIN(end_date,CURDATE())) * amount from membership where [email protected] 

这是在MS SQLSERVER工作正常,请为我改变MySQL的了Syntex

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

这将返回成员的金额已经支付了这个日期2011-05-15正确..所以我们如何计算,他必须支付的金额到今天的日期... – user682417

+0

只是改变'2011-05-15'与今天的日期亲爱的。给你今天他必须支付的金额。 – rahularyansharma

+0

这与我在回答中告诉的完全一样,但参数不是值。 – Gedrox

0

你的问题不是很清楚,我不认为你已经正确地解释了架构。如果你想获得的一切和,每一个已支付:

select sum(amount) from membership group by member_id 

随意添加一个where子句如果您想按日期或member_id(S)来限制它:

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

+0

他想计算在订阅开始日期和他给出的日期之间支付的金额。 – rahularyansharma

+0

雅是多数民众赞成在我想rahul ....你是正确的.. – user682417

+0

@rahularyansharma那么他们需要知道多少个月之间的订阅开始日期和结束日期乘以每月金额,假设没有改变自开始日期和现在。你对问题的总结与他们的评论不同。你认识他们吗? – Raoul

0

我猜你只有订阅数据不是全部付款表,对吧? 然后,你需要这样的表述

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

当然你应该列名和参数替换常量。

这当然假定付款日10取决于订阅开始日期并且顾客已按时付款。 :)