【发布时间】:2014-06-20 14:53:26
【问题描述】:
我在 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 的最后一条记录,但它可能不是当前的。那么我如何在 WHERE 子句中检查 cob.status 是否是当前的 status 来决定是否将其放入列表中?比如:
WHERE IF(cob.status == the last status inserted AND cob.status == 'x')
你能理解我想做什么吗?谢谢。
【问题讨论】:
-
你如何决定当前的状态是什么?
-
我在第一个查询中使用 ORDER BY DESC 和 LIMIT 1。但我不知道如何在 Where 子句中执行此操作。我有一个存储日期和小时的 created 字段。
-
如果可行的话,你的问题在哪里?
标签: mysql sql where-clause conditional-statements