我有两张客户债务表。第一个是:
client_debts:( id ,client_name,total_debts,date_now,time_now)
和client_details表一起使用外键连接到client_debts,在其中,我们添加了每个客户端的付款
client_details:( id , client_id ,付款,date_now,time_now)
我想要做的是,在我选择client_name时使用INNER JOIN
,在client_details中创建一个包含来自client_details的列的total_debs,它为每个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
查询添加JOIN
。
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 AND t1.total_debts<>'payment'
GROUP BY t2.client_id
但结果仍然相同:
现在我真正想做的是删除客户支付总债务的行等于他们的付款,并添加一个新条件,我从client_details获取日期,并提取月份并比较它到本月,查看客户本月是否支付或仍未支付。
感谢任何帮助。
答案 0 :(得分:0)
试试这个:
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;