我有 2 个客户债务表。第一个是:
client_debts: (id, client_name, total_debts, date_now, time_now)
client_details 表通过外键连接到 client_debts,在其中,我们添加每个客户的付款
client_details: (id, client_id, payment, date_now, time_now)
我想要做的是,创建一个INNER JOIN
,其中我选择 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
结果是这样的:
黑色行是客户支付产品所有债务的地方,即使他因为购买其他产品而有其他债务,所以我需要从表中删除这一行。因此,我尝试向此 JOIN
查询添加 AND
。
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 中获取日期,提取月份并进行比较到当前月份,查看客户本月是否付款或仍未付款。
感谢任何帮助。
最佳答案
试试这个:
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;
关于mysql - 删除行并比较月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34759781/