试图在截止日期前吸引逾期会员
这是实际的查询
Select members.member_Id, membertomships.memberToMship_DueDay, sum(memberToMship_ChargePerPeriod)-sum(memberAccTran_Value) as StillDue
from membertomships
left join mshipoptions on membertomships.mshipOption_Id = mshipoptions.mshipOption_Id
left join members on membertomships.member_Id = members.member_Id
left join memberacctrans on memberacctrans.member_Id = members.member_Id
WHERE sum(if(memberToMship_DueDay<CURDATE(),0,memberToMship_ChargePerPeriod))>sum(memberAccTran_Value);
修改后的查询:
Select
members.member_Id,
membertomships.memberToMship_DueDay,
sum(sum(memberToMship_InductionFee+memberToMship_JoinFee + (IF(mshipOption_Period='year', TIMESTAMPDIFF (YEAR ,memberToMship_StartDate, memberToMship_EndDate), TIMESTAMPDIFF (MONTH ,memberToMship_StartDate, memberToMship_EndDate)) * memberToMship_ChargePerPeriod))) - sum(memberAccTran_Value) as StillDue
from membertomships
left join mshipoptions on membertomships.mshipOption_Id = mshipoptions.mshipOption_Id
left join members on membertomships.member_Id = members.member_Id
left join memberacctrans on memberacctrans.member_Id = members.member_Id
group by member_Id
having sum(if(memberToMship_DueDay<today(),0,memberToMship_ChargePerPeriod))>sum(memberAccTran_Value);
注意: paymenttable = memberacctrans 表
得到了这样的错误,
Error Code: 1111
Invalid use of group function
任何人都可以帮助我解决这个查询
this is the actual query
Select members.member_Id, membertomships.memberToMship_DueDay, sum(memberToMship_ChargePerPeriod)-sum(memberAccTran_Value) as StillDue
from membertomships
left join mshipoptions on membertomships.mshipOption_Id = mshipoptions.mshipOption_Id
left join members on membertomships.member_Id = members.member_Id
left join memberacctrans on memberacctrans.member_Id = members.member_Id
WHERE sum(if(memberToMship_DueDay<CURDATE(),0,memberToMship_ChargePerPeriod))>sum(memberAccTran_Value);
modified query:
Select
members.member_Id,
membertomships.memberToMship_DueDay,
sum(sum(memberToMship_InductionFee+memberToMship_JoinFee + (IF(mshipOption_Period='year', TIMESTAMPDIFF (YEAR ,memberToMship_StartDate, memberToMship_EndDate), TIMESTAMPDIFF (MONTH ,memberToMship_StartDate, memberToMship_EndDate)) * memberToMship_ChargePerPeriod))) - sum(memberAccTran_Value) as StillDue
from membertomships
left join mshipoptions on membertomships.mshipOption_Id = mshipoptions.mshipOption_Id
left join members on membertomships.member_Id = members.member_Id
left join memberacctrans on memberacctrans.member_Id = members.member_Id
group by member_Id
having sum(if(memberToMship_DueDay<today(),0,memberToMship_ChargePerPeriod))>sum(memberAccTran_Value);
note :paymenttable = memberacctrans table
got the error like this
Error Code: 1111
Invalid use of group function
would any one pls help me on this query
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您愿意存储,您将使一切变得更加容易
每笔付款还涉及哪条会员记录!
尝试以下 SQL 查询来显示所有未结费用:
从那里您可以改进它以仅计算已到期的费用:
(我不知道你使用哪个数据库服务器,所以 IF 的语法可能是
不正确!)
You'll make everything a lot easier if you would store for
each payment also which membertomship record it refers to!
Try the following SQL Query to show all open dues:
From there you can improve it to only calculate the fees that are already due:
(I don't know which database server you use, so the syntax for the IF may be
incorrect!)
不知道表中的数据类型并假设您对日期字段使用简单的“日期”类型,您可以简单地执行以下操作:(注意您在哪里看到这是一个创建的字段,您可以重命名它们)
现在使用此数据在member_table中设置:
并且membertomship的这个数据集:
给了我这个结果集:
记住select语句member_overdue是我在内连接中设置的别名,这里不需要左和右,并且只要满足以下条件,您的其他表就无关紧要付款也更新成员资格表。如果这是真的,那么这个简单的查询就是您所需要的。
Not knowing the data types in your tables and assuming that you are using a simple "date" type for date fields, you could simply do this: (note where you see AS this is a created field you can rename them)
Now using this data set in member_table:
and this data set for membertomship:
Gave me this result set:
remember that the select statement member_overdue is the alias i set in the inner join, a left and right is not ness here and your other table is irrelevant as long as payments made also update the membertomship table. If this is true then this simple query is all you need.