Memahami MySQL Self-Joins
Memahami penyambungan diri dalam MySQL boleh menjadi menakutkan, terutamanya jika anda menemui mereka buat kali pertama . Mari kita rungkai pertanyaan berikut untuk memahami mekanismenya:
SELECT event2.id, event2.startdate, event2.price
FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
WHERE event1.id = $id
Memecahkan Pertanyaan:
DARI dan SERTAI:
- Pertanyaan ini menggabungkan data daripada dua jadual yang sama, mm_eventlist_dates, menggunakan kata kunci JOIN.
- Ia mencipta dua jadual maya, event1 dan event2, mewakili jadual yang sama dua kali.
WHERE:
- Klausa ini memilih rekod tertentu daripada acara1 berdasarkan IDnya. Katakan rekod ini mewakili Peristiwa1.
HIDUP:
- Klausa ini mentakrifkan hubungan antara dua jadual maya.
- Ia membandingkan tarikh mula acara2 dengan tarikh tamat acara1, diimbangi dengan satu hari.
- Syarat ini memastikan tarikh mula acara2 hendaklah tepat sehari selepas acara1 tamat.
PILIH:
- Klausa ini menentukan medan yang anda ingin dapatkan daripada pertanyaan.
- Dalam kes ini, ia memilih ID, tarikh mula dan harga acara2.
Cara Pertanyaan Berfungsi:
- Pertanyaan mula-mula mengenal pasti rekod daripada acara1 yang sepadan ID yang ditentukan melalui pembolehubah $id.
- Untuk rekod yang dikenal pasti daripada peristiwa1, ia mengira tarikh iaitu sehari selepas tarikh tamatnya.
- Tarikh yang dikira kemudiannya dibandingkan dengan tarikh mula rekod dalam acara2.
- Memandangkan acara1 dan acara2 adalah jadual yang sama, satu-satunya rekod yang sepadan dalam acara2 akan mempunyai tarikh mula iaitu sehari selepas acara1 tamat.
- Rekod padanan daripada acara2 ini mewakili acara berikut (Acara2) yang berlaku sehari selepas Acara1.
- Akhir sekali, pertanyaan mendapatkan ID, tarikh mula dan harga Acara2 dan memaparkannya sebagai hasilnya.
Atas ialah kandungan terperinci Bagaimanakah MySQL Self-Joins Membantu Mencari Acara Yang Berlaku Satu Hari Selepas Satu Hari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan: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