Wählen Sie die Zeilen mit dem aktuellen timestamp mit bestimmten Kriterien und zusätzliche Tabellen SQL

Ich hatte gehofft, jemand könnte mir helfen bei der Lösung dieses Problems.

Habe ich 3 Tabellen.

Jede Tabelle hat eine ID, die ich verwenden können, um alle von Ihnen zusammen. Diese ID ' s sind nicht die gleichen, aber Sie arbeiten, und eine Verbindung zu jedem anderen in Ordnung.

Was ich brauche, zu bekommen, ist die LETZTE update-Datum (timestamp) für bestimmte Produkt-Nummer (könnte mehr als ein Produkt), das war status.

Hier sind, wie die Tabellen Aussehen (Sie sind viel komplexer, aber ich vereinfachte)

mercury.cs_batch_event
PRODUCT_ID (VARCHAR2(100 CHAR))
CBL_REQUEST_ID (VARCHAR2(12 CHAR))

mercury.cs_status_srch
CBL_REQUEST_ID (VARCHAR2(12 CHAR))
LOG_ID  (VARCHAR2(12 CHAR))
STATUS_REF_ID (NUMBER(8,0))

mercury.edit_log
ELOG_ID (VARCHAR2(12 CHAR))
ON_DATE_TIME (TIMESTAMP(6))

Ich versuchte es mehrere verschiedene Möglichkeiten, und nach der Suche für eine Weile auf das internet, der nächste, den ich bekommen konnte, war dies:

SELECT * 
FROM (SELECT cbl.product_id, src.status_ref_id,
             TO_CHAR(elog.on_date_time, 'dd/mm/yyyy hh24:mi:ss') date_updated
      FROM mercury.cs_batch_event cbl,
           mercury.cs_status_srch src, 
           mercury.edit_log elog
      WHERE cbl.product_id IN ('A555', 'B555')
        AND cbl.cbl_request_id = src.cbl_request_id
        AND src.log_id = elog.elog_id
      ORDER BY elog.on_date_time DESC)
WHERE rownum = 1

Und es wieder unten, das ist richtig, aber wenn mehrere Produkt-zahlen sind eingefügt, die es noch gibt Wert für nur ein Produkt (das ist wegen der row number=1 wahrscheinlich)

PRODUCT_NUMBER  DATE_UPDATED        STATUS
A555            29/06/2011 07:51:24 30169

Dank

Okay, können wir einige Beispiel - ab - Daten für diese? Die Menge der Antworten ist potenziell groß, denn Sie können viele-viele-Beziehungen, die Sie nicht gesagt haben, uns über

InformationsquelleAutor Greg | 2011-10-20

Schreibe einen Kommentar