我的情况如下:
我正在建立一个发票系统,除了发票重复之外,我几乎已经完成了所有工作。以下是我没有成功的尝试。
条件:
生成新的重复发票的条件是 - >
我将用cron运行脚本,它将每天运行,然后如果合同没有,我将每天生成发票。 如果合同有此日期的发票,则不执行任何操作 - 退出。
这里我在SQL中有一段代码,我正在检索每个拥有此日期发票的人(现在是月和年)。
一些有用的信息:
我有 324个有效合同,其中已在后续查询中生成了发票。
SELECT contratos.id, contratos.idcliente, contratos.ativo, invoices.id as inv, invoices.due_date, invoices.contratoid
FROM contratos
LEFT JOIN invoices ON invoices.contratoid = contratos.id
WHERE contratos.ativo = 1
AND invoices.referencia = 'PA'
AND YEAR(due_date) = YEAR(CURDATE())
AND MONTH(due_date) = MONTH(CURDATE())
GROUP BY invoices.id
我在另一个查询中有 368个有效合同。
SELECT * FROM contracts WHERE active=1
然后我知道我有44份没有发票的合同,我知道我需要为44份合约生成新的佣金。
我的问题是我如何检索这44份合约并在我的第一个查询中显示它,它可以是空的(没问题),对我来说很重要的是合同ID。
如果我不够清楚,请告诉我。
感谢社区。 strong>
[EDITED] 摘要
我真的想在我的查询(一个查询)中执行此操作,而不是在我的代码中执行此操作。
答案 0 :(得分:2)
LEFT JOIN返回正在填写所有NULL值的发票记录。当你要求invoices.referencia to ='PA'时,这将消除所有完全为空的记录(否定你的外连接)。