Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe von SQL-Joins den neuesten Status für jeden Dienst abrufen?

Wie kann ich mithilfe von SQL-Joins den neuesten Status für jeden Dienst abrufen?

Barbara Streisand
Freigeben: 2025-01-04 22:16:44
Original
850 Leute haben es durchsucht

How to Retrieve the Latest Status for Each Service Using SQL Joins?

Neueste Statusdaten mit Inner Join und Limit

Diese Herausforderung besteht darin, den neuesten Status für jeden Dienst aus zwei Tabellen abzurufen: Dienst und Status. Die Service-Tabelle enthält Serviceinformationen, während die Statustabelle Statusaktualisierungen mit zeitgestempelten Datensätzen enthält.

Um dies zu erreichen, kann ein innerer Join verwendet werden, um die Tabellen basierend auf der Spalte „service_id“ zu kombinieren. Die Herausforderung besteht jedoch bei der Auswahl des aktuellen Status für jeden Dienst. Die folgende Anweisung ruft nur den neuesten Status für den letzten Dienst ab:

SELECT ser.id, ser.name, a.status, a.timestamp
from Service ser
  inner join (select * from status
              order by Status.timestamp
              DESC limit 1) as a
    on a.service_id = ser.id
Nach dem Login kopieren

Um den neuesten Status für jeden Dienst abzurufen, ist eine verschachtelte Abfrage erforderlich:

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;
Nach dem Login kopieren

Die verschachtelte Abfrage ruft ab der maximale Zeitstempel für jeden Dienst, der den neuesten Status für diesen Dienst darstellt. Die Ergebnisse werden dann mit der Hauptabfrage zusammengeführt, um die neuesten Statusdaten für jeden Dienst anzuzeigen.

Mit diesem Ansatz wird die gewünschte Ausgabe erreicht:

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 kann ich mithilfe von SQL-Joins den neuesten Status für jeden Dienst abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage