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
891 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!

source:php.cn
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