Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 试图在到期日前获得逾期会员_Mysql_Sql_Mysql Error 1111 - Fatal编程技术网

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