我正在开发一个网站,用户在其中输入客户收到的表格中的金额,如果任何客户没有提供分期付款(金额),那么用户不会在表格中输入任何金额,并且用户希望获得基于违约客户的信息10天。所以我的问题是应该定义哪些表和属性来处理这种情况。
我的桌子是
客户(cId、姓名、预付款、折扣、余额)
分期付款(id、日期、金额、cId)
但是通过分期付款表,我没有得到如何生成那些在 b/c 10 天内没有支付任何款项的人的报告,因为我说用户不会在分期付款表中插入违约者的数据。提前致谢
尝试这个
select * from clients where cid in (select cid from installments where amount is null and (date between DATE_ADD(curdate(),INTERVAL -10 DAY) and curdate())
Date_ADD将有助于获取过去 10 天的详细信息,然后再添加一个条件,这些条件在那些日子里没有支付任何费用。
这取决于您的installments.date
字段是什么格式。以下是如何按客户的最近日期排序cid = 1
:
SELECT i.*
FROM installments i
INNER JOIN clients c ON c.cid = i.cid
WHERE c.cid = 1
ORDER BY i.date DESC
installments.date
字段格式如何?它是日期时间字符串(例如'2007-12-15 23:50:26'
)、UNIX 时间戳(例如1111885200
)还是其他?
为什么不添加nextPaymentDate
forClient
的表,例如:
Clients (cId, name, advance, discount, balance, nextPaymentDate)
所以,你可以像这样查询
SELECT * FROM Clients
WHERE DATEDIFF(CURDATE(),nextPaymentDate) >= 10;
您的Installments
表格中仍然会有付款的详细信息,但每次客户付款时nextPaymentDate
都会更新。
SELECT i.*
FROM installments i
right JOIN clients c ON c.cid = i.cid
WHERE date between DATE_ADD(curdate(),INTERVAL -10 DAY) and curdate()