Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Status Terkini untuk Setiap Perkhidmatan Menggunakan SQL Joins?

Bagaimana untuk Mendapatkan Status Terkini untuk Setiap Perkhidmatan Menggunakan SQL Joins?

Barbara Streisand
Lepaskan: 2025-01-04 22:16:44
asal
850 orang telah melayarinya

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

Data Status Terkini dengan Sertaan dan Had Dalam

Cabaran ini melibatkan mendapatkan semula status terkini untuk setiap perkhidmatan daripada dua jadual: Perkhidmatan dan Status. Jadual Perkhidmatan mengandungi maklumat perkhidmatan, manakala jadual Status menyimpan kemas kini status dengan rekod cap masa.

Untuk mencapai ini, cantuman dalaman boleh digunakan untuk menggabungkan jadual berdasarkan lajur service_id. Walau bagaimanapun, cabaran timbul apabila memilih status terkini untuk setiap perkhidmatan. Pernyataan berikut hanya mendapatkan status terkini untuk perkhidmatan terakhir:

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
Salin selepas log masuk

Untuk mendapatkan semula status terkini bagi setiap perkhidmatan, pertanyaan bersarang diperlukan:

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;
Salin selepas log masuk

Pertanyaan bersarang mendapatkan semula cap masa maksimum untuk setiap perkhidmatan, yang mewakili status terkini untuk perkhidmatan tersebut. Hasilnya kemudian digabungkan dengan pertanyaan utama untuk memaparkan data status terkini bagi setiap perkhidmatan.

Menggunakan pendekatan ini, output yang diingini dicapai:

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

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Status Terkini untuk Setiap Perkhidmatan Menggunakan SQL Joins?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan