2017-10-28 4 views
0

私はデータベースを持っています、私のクエリは2テーブル(ms_recepciones & ms_estados)に関連しています。このデータベースは、モバイル修復ストアを管理するためのデータベースです。 ms_recepcionesでTable1に格納されているすべてのデータと、Table1に関連するTable2の最後のレコードを表示します。

Tabla > ms_recepciones

Tabla > ms_estados


記録、異なる状態を有することができます。これらの状態は、ms_estadosの履歴に格納されます。たとえば:[?]入院、予算、請求、キャンセル...

彼らが

キーid_recepcionによって関連している私の質問は:

私はms_recepcionesのすべてのデータを表示する必要が

とステータスはms_estadosに最後に登録されたものでなければなりません。例えば

ms_recepcionesのid_recepcionの#50が状態を持っていた場合 - >入院、配信、請求書。請求書のみが表示されます(これは最後です)。

他のすべてのレセプションを単一のテーブルにまとめて表示する場合も同じです。

後で私はフィルタリングするために願っています:現在の状態 - >、入院、請求書などを事前に

、あなたの助けのためにどうもありがとうございました。私たちはそれをやろうとしましたが、成功しませんでした。

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

関連する問題