Mysql 试图在到期日前获得逾期会员
这是实际的查询Mysql 试图在到期日前获得逾期会员,mysql,sql,mysql-error-1111,Mysql,Sql,Mysql Error 1111,这是实际的查询 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
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);
有人能帮我查询一下吗如果你能为我存储 每一笔付款也包括它所指的会员资格记录 尝试以下SQL查询以显示所有未结应付款:
Select member_id, max(membertomship_dueday), sum(membertomship_Totalfee)-sum(payment_Money) as StillDue
from membertomship
left join member_table on membertomship.memberID = member_table.member_id
left join payments on payment_member_id = member_table.member_id
group by member_id
having sum(membertomship_Totalfee)>sum(payment_Money)
在此基础上,您可以将其改进为仅计算已到期的费用:
(我不知道您使用的是哪个数据库服务器,因此IF的语法可能是
不正确
选择会员id、(会员资格日)、金额(会员资格费)–金额(付款金额)作为仍然到期
从会员资格
MemberToShip.memberID=member\u table.member\u id上的左联接成员\u表
付款时左联合付款\成员\ id=成员\表格。成员\ id
按成员分组\u id
有一笔钱(如果)会员资格
不知道表中的数据类型,并且假设您对日期字段使用的是简单的“日期”类型,您可以简单地执行此操作:(注意,这是一个已创建的字段,您可以重命名它们)
以及此MemberToShip的数据集:
membertomship_id membertomship_StartDate membertomship_enddate membertomship_Totalfee membertomship_dueday membertomship_paymethod member_Id
1 6/1/2011 7/1/2011 45 7/1/2011 cash 1
2 7/1/2010 8/3/2011 45 8/3/2011 cc 2
3 1/1/2009 5/1/2011 45 5/1/2011 cc 3
给了我这个结果集:
member_id member_firstname member_lastname days_diff
1 brandon s 10
3 gregg s 71
请记住,select语句成员是我在内部联接中设置的别名,这里没有左右键,只要支付的款项也更新了membertomship表,那么其他表就无关紧要了。如果这是真的,那么这个简单的查询就是你所需要的。MM,列的数据类型是什么?到目前为止你有什么?你试过什么?@mr你的意思是你想要哪种类型的列?我的意思是你想要这些列的数据类型…@Adam我不明白你说的是什么…@Clodoaldo你能看看这一个吗?是否有可能获得会员的详细信息,从会员资格到期日起超过7天?那么第二个查询应该可以工作了您试过了吗?(如果您在原始帖子中拼写错误,您可能必须修复表名/字段名)您可以使用datediff(今天(),membership\u dueday)>=7在7天前的dueday进行筛选。您好,我添加了一些代码来代替这一个“sum(membertomship\u Totalfee)”为什么我写这篇文章是因为我想在总费用中增加一些费用,我已经像我在问题中提到的那样将查询写为修改后的查询,但它给出了错误“错误代码:1111无效使用组函数”你能发布完整的查询吗?
Select member_id, (membertomship_dueday), sum(membertomship_Totalfee)-sum(payment_Money) as StillDue
from membertomship
left join member_table on membertomship.memberID = member_table.member_id
left join payments on payment_member_id = member_table.member_id
group by member_id
having sum(if(membertomship_dueday<today(),0,membertomship_Totalfee))>sum(payment_Money)
SELECT
member_overdue.member_id,
member_overdue.member_firstname,
member_overdue.member_lastname,
DATEDIFF(CURDATE(),membertomship.membertomship_dueday) AS days_diff
FROM
membertomship
Inner Join member_table AS member_overdue ON member_overdue.member_id = membertomship.member_Id
WHERE
membertomship.membertomship_dueday < CURDATE()
member_id member_firstname member_lastname
1 brandon s
2 sally s
3 gregg s
membertomship_id membertomship_StartDate membertomship_enddate membertomship_Totalfee membertomship_dueday membertomship_paymethod member_Id
1 6/1/2011 7/1/2011 45 7/1/2011 cash 1
2 7/1/2010 8/3/2011 45 8/3/2011 cc 2
3 1/1/2009 5/1/2011 45 5/1/2011 cc 3
member_id member_firstname member_lastname days_diff
1 brandon s 10
3 gregg s 71