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
Libérer: 2025-01-04 22:16:44
original
922 Les gens l'ont consulté

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
Copier après la connexion

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;
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal