Memahami MySQL Self-Joins
Pertanyaan baru-baru ini meneroka konsep self-joins dalam MySQL. Matlamatnya adalah untuk mendapatkan maklumat tentang acara (Acara2) yang mengikuti acara lain (Acara1) pada satu hari. Semasa pertanyaan berjaya dilaksanakan, pemahaman lanjut dicari berkenaan kefungsiannya.
Memecahkan Pertanyaan:
Pertanyaan boleh dipecahkan kepada beberapa bahagian yang berbeza:
-
Data Pendapatan semula:
- DARI mm_eventlist_dates acara1: Memilih data daripada jadual bernama mm_eventlist_dates dan menetapkan alias acara1.
- SERTAI mm_eventlist_dates acara2: Melaksanakan mm_eventlist_senarai_sendiri jadual maya kedua alias sebagai acara2.
-
Syarat Sertai:
- PADA acara2.startdate = date_add(event1.enddate, INTERVAL 1 DAY) : Menentukan syarat penyertaan yang menapis rekod acara2 berdasarkan tarikh mulanya yang sepadan dengan tarikh tamat acara1 tambah satu hari.
-
Penapisan:
- WHERE event1.id = $id: Menapis jadual event1 untuk mengambil hanya rekod dengan yang ditentukan ID.
Cara Ia Berfungsi:
-
Pemilihan Rekod: Klausa WHERE mula-mula mendapatkan semula acara tertentu (Acara1) berdasarkan IDnya.
-
Tarikh Pengiraan: Fungsi date_add() mengira hari berikutnya selepas tarikh tamat Event1 yang dipilih.
-
Penapisan Sertai: Syarat sertai kemudiannya sepadan dengan rekod dalam acara2 di mana tarikh mula sepadan dengan tarikh yang dikira .
-
Pengeluaran Data: Akhirnya, klausa SELECT mendapatkan semula tiga medan daripada jadual acara2: ID, tarikh mula dan harga.
Penggambaran Ringkas:
Bayangkan dua senarai acara berasingan (Acara1 dan Acara2) di mana setiap acara mempunyai ID, tarikh mula dan harga. Langkah pertanyaan ialah:
- Cari Acara1 dengan ID yang ditentukan.
- Kira keesokan harinya selepas tarikh tamat Event1.
- Kenal pasti acara Event2 di mana tarikh mulanya sepadan tarikh yang dikira.
- Ekstrak medan yang dikehendaki daripada Acara2 yang sepadan rekod.
Atas ialah kandungan terperinci Bagaimanakah cara penyertaan sendiri MySQL mencari acara selepas acara lain pada satu hari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!