我在MySql中有3个左连接表。
contratos
,用于存储客户数据
funcionario
,用于存储员工数据
cobranca
,存储每个客户的费用。
我想根据费用status
生成报告。但每个客户费用都有很多status
,我想要检索当前的status
。
以下代码返回cobrancas
表的最后一次更新。
SELECT cob.status, cob.created, con.data_venda, cpn.contrato, con.razao_social, con.cnpj, con.valor, f.nick
FROM cobrancas cob
LEFT JOIN contratos con
ON c.id = cob.contrato
LEFT JOIN funcionarios f
ON f.id = cob.cobrador
WHERE 1=1
ORDER BY cob.created DESC
LIMIT 1
但它没有status
过滤器返回。如果我放置一个像cob.status = 'x'
这样的WHERE子句,它会返回带有此status
的最后一条记录,但它可能不是最新的。那么我如何检查cob.status
是否是WHERE子句中的当前status
来决定我是否将它放入列表中?类似的东西:
WHERE IF(cob.status == the last status inserted AND cob.status == 'x')
你能理解我想做什么吗?谢谢。
答案 0 :(得分:0)
使用子查询的一种解决方案
select * from
(
SELECT cob.status, cob.created, con.data_venda, cpn.contrato, con.razao_social, con.cnpj, con.valor, f.nick
FROM cobrancas cob
LEFT JOIN contratos con
ON c.id = cob.contrato
LEFT JOIN funcionarios f
ON f.id = cob.cobrador
WHERE 1=1
ORDER BY cob.created DESC
LIMIT 1
) where status = 'X'