Heim >Datenbank >MySQL-Tutorial >Wie rufe ich den neuesten Status für alle Dienste mithilfe eines Inner Joins ab?

Wie rufe ich den neuesten Status für alle Dienste mithilfe eines Inner Joins ab?

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 13:49:40750Durchsuche

How to Retrieve the Latest Status for All Services Using an Inner Join?

Auswahl aus zwei Tabellen mit Inner Join für den neuesten Status

Wenn Sie zwei Tabellen haben, die zusammengehörige Daten enthalten, ist es notwendig, bestimmte Informationen abzurufen aus beiden Tabellen. In diesem Szenario haben Sie zwei Tabellen: Service und Status. In der Diensttabelle werden Namen und IDs gespeichert, während in der Statustabelle der Status und die Zeitstempel der einzelnen Dienste verfolgt werden.

Um den neuesten Status für jeden Dienst abzurufen, können Sie einen Inner-Join-Vorgang verwenden. Das Ziel besteht darin, Zeilen aus beiden Tabellen basierend auf der Spalte „service_id“ zu kombinieren, um sicherzustellen, dass nur die neuesten Statusinformationen zurückgegeben werden.

Leider ruft die von Ihnen erwähnte Abfrage nur den neuesten Status für den Dienst mit service_id = 2 ab. Um diese Einschränkung zu beheben und den neuesten Status für alle Dienste abzurufen, ziehen Sie die folgende geänderte SQL-Anweisung in Betracht:

SELECT
  ser.id,
  ser.name,
  s.status,
  s.timestamp
FROM Service ser
INNER JOIN status AS s
  ON s.service_id = ser.id
INNER JOIN
  (
    SELECT
      service_id,
      MAX(timestamp) AS MaxDate
    FROM status
    GROUP BY service_id
  ) AS a
  ON a.service_id = s.service_id
    AND a.MaxDate = s.timestamp;

Die Unterabfrage innerhalb des letzten inneren Joins eliminiert alle außer dem Status mit den neuesten Zeitstempeln für jeden Dienst. Durch den Vergleich der Service-IDs und den Abgleich mit den neuesten Zeitstempeln können Sie garantieren, dass die Abfrage die gewünschten Ergebnisse liefert:

id name status timestamp
1 Test1 OK October 15, 2015 09:08:07
2 Test2 OK October 15, 2015 10:15:23

Das obige ist der detaillierte Inhalt vonWie rufe ich den neuesten Status für alle Dienste mithilfe eines Inner Joins ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn