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 年 5 月 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' 之间给出错误

你能解释一下为什么它会出错吗

4

3 回答 3

1
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 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服务器屏幕截图

于 2011-07-06T09:31:37.713 回答
0

您的问题不是很清楚,我认为您没有正确解释架构。如果您想获得每个人支付的所有费用的总和:

select sum(amount) from membership group by member_id

如果您希望按日期或 member_id(s) 限制它,请随意添加 where 子句:

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

于 2011-07-06T09:23:22.813 回答
0

我猜你只有订阅数据而不是所有付款表,对吧?那么你需要这样的声明

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

当然,您应该用列名和参数替换常量。

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

于 2011-07-06T09:27:04.940 回答