Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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 - Fatal编程技术网

Mysql 删除行并比较月份

Mysql 删除行并比较月份,mysql,sql,Mysql,Sql,我有两张客户债务表。第一个是: 客户债务:id、客户名称、债务总额、当前日期、当前时间 和client_details表,它通过一个外键连接到client_债务,并在其中添加每个客户的付款 客户详细信息:id、客户id、付款、现在日期、现在时间 我想做的是,做一个内部连接,在这里我选择client_name和他的total_debs,并从client_details中选择一个列,该列为每个client_id的付款总额。因此我尝试了以下方法: SELECT t1.client_name, t1.t

我有两张客户债务表。第一个是:

客户债务:id、客户名称、债务总额、当前日期、当前时间

和client_details表,它通过一个外键连接到client_债务,并在其中添加每个客户的付款

客户详细信息:id、客户id、付款、现在日期、现在时间

我想做的是,做一个内部连接,在这里我选择client_name和他的total_debs,并从client_details中选择一个列,该列为每个client_id的付款总额。因此我尝试了以下方法:

SELECT t1.client_name, t1.total_debts, t2.client_id, sum(payment) as 'payments' 
FROM client_debts t1
INNER JOIN client_details t2
ON t1.id = t2.client_id
GROUP BY t2.client_id
结果是这样的:

黑色的一行,是客户为一个产品支付所有债务的地方,即使他因为购买了其他产品而有其他债务,所以我需要从表中删除这一行。所以我尝试向这个连接查询添加AND

但结果仍然是一样的:

现在我真正想做的是,删除客户支付的债务总额等于其支付金额的行,并添加一个新条件,从客户处获取日期的详细信息,提取月份并与当前月份进行比较,以查看客户是否在本月支付款项

感谢您的帮助。

尝试以下方法:

SELECT  main.* 
FROM    (SELECT    t1.client_name, t1.total_debts, t2.client_id, sum(payment) payments , t2.date_now ,
                    CASE MONTH(t2.date_now)  
                       WHEN MONTH(CURDATE()) THEN 'Paid'
                       ELSE 'Not Paid'
                    END current_month
        FROM client_debts t1  INNER JOIN client_details t2  ON t1.id = t2.client_id 
        GROUP BY t2.client_id) main
WHERE   main.total_debts<> main.payments;

如果我正确理解你的问题,它应该是t1。total_debts公司我尝试了它,它给了我以下错误:group函数的使用无效,但当我将其用作Payment时它工作是的,但你的查询是total_debts不等于String Payment先生,我只想显示他们没有支付所有欠款的客户,或者每个派生表都应该有自己的表alias@androidnation修正了mysql的查询,试试吧,我需要你帮我做点别的,有时候一个客户买了两件东西,但这个月只买了一件,所以实际上他会付钱,然后我不想把他的名字显示在尚未付款的名单上
SELECT  main.* 
FROM    (SELECT    t1.client_name, t1.total_debts, t2.client_id, sum(payment) payments , t2.date_now ,
                    CASE MONTH(t2.date_now)  
                       WHEN MONTH(CURDATE()) THEN 'Paid'
                       ELSE 'Not Paid'
                    END current_month
        FROM client_debts t1  INNER JOIN client_details t2  ON t1.id = t2.client_id 
        GROUP BY t2.client_id) main
WHERE   main.total_debts<> main.payments;