【问题标题】:Show all data stored in Table1 and the last record in Table2 related to Table1显示 Table1 中存储的所有数据以及 Table2 中与 Table1 相关的最后一条记录
【发布时间】:2017-10-28 12:53:11
【问题描述】:

我有一个数据库,我的查询与 2 个表(ms_recepciones 和 ms_estados)有关。该数据库用于管理移动维修店。

Tabla > ms_recepciones

Tabla > 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

这段代码我试过了,但是第一行不正确。

问候。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    问题是您的COALESCE 子句会为您提供最新日期,但e.id_estadoe.estado 不一定会为您提供与最新行匹配的列。

    您不是第一个遇到此问题的人。查看此问题的答案:Optimize sub-query selecting last record of each group

    【讨论】:

    • 感谢您的回答。我会检查你提供的链接。我还将尝试另一种类型的查询。也许 COALESCE 不适合这种情况。
    • COALESCE 不是问题所在。问题是max(e.fecha_estado)返回的行和e.id_estado, e.estado返回的行之间没有关联。
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 2015-07-18
    • 1970-01-01
    相关资源
    最近更新 更多