Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Rekod Tempahan Yang Tidak Dibatalkan daripada Pangkalan Data?

Bagaimana untuk Mendapatkan Rekod Tempahan Yang Tidak Dibatalkan daripada Pangkalan Data?

Mary-Kate Olsen
Lepaskan: 2025-01-23 19:46:44
asal
720 orang telah melayarinya

How to Retrieve Uncancelled Reservation Records from a Database?

Mengambil semula Rekod Tempahan Yang Tidak Dibatalkan

Memandangkan dua jadual, tempahan dan reservation_log, di mana tempahan mengandungi maklumat tempahan umum dan reservation_log menjejaki perubahan yang dibuat pada tempahan (termasuk pembatalan), tugas adalah untuk mengeluarkan tempahan yang belum dibatalkan. Klausa WHERE yang mudah berfungsi dengan berkesan untuk mengenal pasti tempahan yang dibatalkan, tetapi ia gagal apabila mencari rekod yang tidak dibatalkan.

Nasib baik, dua pendekatan boleh digunakan untuk menyelesaikan tugas ini:

Pendekatan 1: Menggunakan NOT IN

Kaedah ini memanfaatkan klausa NOT IN untuk mengecualikan tempahan dengan pembatalan yang sepadan rekod.

SELECT *
FROM reservation
WHERE id NOT IN (
  SELECT reservation_id
  FROM reservation_log
  WHERE change_type = 'cancel'
);
Salin selepas log masuk

Pendekatan 2: Menggunakan LEFT JOIN

Pendekatan alternatif ialah menggunakan operasi LEFT JOIN. Gabungan kiri mendapatkan semula semua baris daripada jadual tempahan dan termasuk baris yang sepadan daripada jadual reservation_log jika ia wujud. Baris tanpa rekod pembatalan sepadan akan mempunyai nilai NULL dalam lajur reservation_log. Klausa WHERE kemudiannya boleh menapis baris ini.

SELECT r.*
FROM reservation r
LEFT JOIN reservation_log l
  ON r.id = l.reservation_id AND l.change_type = 'cancel'
WHERE l.id IS NULL;
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Tempahan Yang Tidak Dibatalkan daripada Pangkalan Data?. 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