我在mysqli中有2个表,我想从table1中选择所有客户,其中表2中还没有付款条目或(具体日期)。
实际上我正在使用php中的客户支付系统,并希望根据截止日期生成有关未提交分期付款的客户的报告。
截止日期是每个月的10日。 我怎么能实现这个目标?
已编辑以获取更多详细信息: 1-在表1中我有客户的生物数据 2-在表2中分期付款条目
客户必须在每个月的10号之前支付分期付款。 当客户提交付款时,其条目将被插入表2中。
现在,我想在当月的第10天(或任何截止日期)之前通知客户或提交尚未提交分期付款的报告。
必须进行报告,以便恢复人员可以获取提交分期付款较晚的客户列表,或者将提醒发送给客户以便即将进行分期付款。
我的桌子是
答案 0 :(得分:0)
听起来像not exists
。你没有提供足够的信息,但想法是:
set @duedate = ?; -- whatever your logic is for this
select t1.*
from table1 t1
where not exists (select 1
from table2 t2
where t2.id = t1.id and t2.date > @duedate
);
编辑:
根据你的评论,我推测你想要:
select t1.*
from table1 t1
where not exists (select 1
from table2 t2
where t2.id = t1.id and
(day(curdate()) > 10 and
t.2 > curdate() + interval (10 - day(curdate)) day
) or
(day(curdate()) > 10 and
t.2 > curdate() + interval (10 - day(curdate)) day - interval 1 month
)
);
请注意,这可能无济于事。延迟付款怎么样?这将使之前的延迟付款计为未逾期。
如果这是一个问题,我建议您提出其他问题。将示例数据和所需结果放在问题中的文本表中。清楚地解释您想要的逻辑,并且任何示例查询都是有用的。
答案 1 :(得分:0)
您正在寻找的是左连接。你可以通过做一些事情来实现这一目标。
SELECT * FROM Table1 LEFT JOIN Table2 On Table1.Key=Table2.Key WHERE Table2.Key IS NULL