2017-10-28 39 views
0

我有一个数据库,我的查询涉及2个表(ms_recepciones & ms_estados)。该数据库用于管理移动维修店。显示存储在表1中的所有数据以及表2中与表1相关的最后一条记录

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 

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

问候。

回答

0

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

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

+0

感谢您的回答。我会检查你提供的链接。我也会尝试另一种类型的查询。也许COALESCE不适合这种情况。 –

+0

''COALESCE''不是问题。问题在于'max(e.fecha_estado)''返回的行与''e.id_estado,e.estado''返回的行之间不存在关联。 – kmoser

相关问题