我有一个数据库,我的查询与2个表(ms_recepciones& ms_estados)有关。此数据库用于管理移动修复存储。
ms_recepciones中的记录可能具有不同的状态。这些状态存储在ms_estados的历史记录中。例如:录取,预算,开发票,取消......
它们与密钥id_recepcion
相关[?]我的问题是:
我需要显示ms_recepciones的所有数据,状态必须只是最后一次在ms_estados中注册。
例如:
如果ms_recepciones的id_recepcion#50具有状态 - >承认,交付,发票。它只显示发票(因为它是最后一个。)。
同一个表格中显示的所有其他招待会一样。
后来我希望过滤:当前状态 - >发票,录取等。
事先,非常感谢你的帮助。我们试图做4个人,没有成功。
SELECT
r.id_recepcion, coalesce(max(e.fecha_estado), '0000-00-00 00:00:00') as UltFecha, e.id_estado, e.estado
FROM
ms_estados e
INNER JOIN
ms_recepciones r
ON
r.id_recepcion = e.id_recepcion
GROUP BY
e.id_recepcion
我试过这段代码,但第一行不正确。
问候。
答案 0 :(得分:0)
问题是,您的COALESCE
子句会为您提供最新日期,但e.id_estado
和e.estado
不一定会为您提供与该最新行匹配的列。
您不是第一个遇到此问题的人。请参阅此问题的答案:Optimize sub-query selecting last record of each group。