Maison >base de données >tutoriel mysql >Comment récupérer le dernier statut de chaque service à l'aide des jointures SQL ?

Comment récupérer le dernier statut de chaque service à l'aide des jointures SQL ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-04 22:16:44871parcourir

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

Dernières données d'état avec jointure et limite internes

Ce défi consiste à récupérer le dernier statut de chaque service à partir de deux tables : Service et Statut. La table Service contient des informations sur le service, tandis que la table Status contient des mises à jour de statut avec des enregistrements horodatés.

Pour y parvenir, une jointure interne peut être utilisée pour combiner les tables en fonction de la colonne service_id. Cependant, le défi se pose lors de la sélection du dernier statut pour chaque service. L'instruction suivante récupère uniquement le dernier statut du dernier service :

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

Pour récupérer le dernier statut de chaque service, une requête imbriquée est requise :

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;

La requête imbriquée récupère l'horodatage maximum pour chaque service, qui représente le dernier état de ce service. Les résultats sont ensuite joints à la requête principale pour afficher les dernières données d'état pour chaque service.

Grâce à cette approche, le résultat souhaité est obtenu :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn