Rumah > pangkalan data > tutorial mysql > Bagaimanakah pertanyaan penyertaan sendiri MySQL mendapatkan semula data yang berkaitan dengan tarikh tamat acara?

Bagaimanakah pertanyaan penyertaan sendiri MySQL mendapatkan semula data yang berkaitan dengan tarikh tamat acara?

Patricia Arquette
Lepaskan: 2024-11-10 16:18:03
asal
314 orang telah melayarinya

How does a MySQL self-join query retrieve data related to an event's end date?

Memahami Mekanisme MySQL Self-Join Query

Self-join queries melibatkan penggabungan dua contoh jadual yang sama untuk membandingkan atau mendapatkan semula yang berkaitan data. Mari kita teliti butiran pertanyaan SQL yang anda kemukakan:

``
PILIH acara2.id, acara2.tarikh mula, acara2.harga
DARI mm_eventlist_dates event1
SERTAI mm_eventlist_dates event2
PADA event2.startdate = date_add(event1.enddate, SELANG 1 HARI)
WHERE event1.id=$id
``

Menyelam ke Bahagian:

  • DARI: Menentukan jadual untuk dicantumkan, dalam kes ini, kedua-duanya adalah contoh jadual 'mm_eventlist_dates'. Kami akan merujuknya sebagai 'event1' dan 'event2' untuk mengelakkan kekeliruan.
  • SERTAI: Memautkan baris dari 'event1' ke 'event2' berdasarkan syarat yang ditetapkan.
  • HIDUP: Mentakrifkan syarat gabungan, yang dalam pertanyaan ini ialah:

    • event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
    • Syarat ini sepadan dengan baris daripada 'event2' yang tarikh mulanya berlaku sehari selepas tarikh tamat baris masuk 'event1'.
  • WHERE: Menapis hasil untuk memasukkan hanya baris yang 'event1.id' sepadan dengan $id yang ditentukan.

Cara Ia Berfungsi Langkah demi Langkah:

  1. Pertanyaan bermula dengan mengenal pasti baris dalam 'event1' yang sepadan dengan parameter $id yang diberikan.
  2. Untuk setiap baris yang sepadan dalam 'event1', ia mengira tarikh tamat ditambah satu hari menggunakan fungsi date_add(), mewakili tarikh mula baris yang berkaitan dalam 'event2'.
  3. Baris 'event1' kemudiannya digabungkan dengan baris dalam 'event2' di mana tarikh mula sepadan dengan tarikh yang dikira dari langkah 2.
  4. Akhir sekali, pertanyaan memilih lajur tertentu ( ID, tarikh mula dan harga) daripada baris yang dipadankan dalam 'event2'.

Contoh Senario:

Pertimbangkan jadual dengan data Acara berikut:

ID Start Date End Date Price
1 2023-03-01 2023-03-10 0
2 2023-03-15 2023-03-22 0
3 2023-04-01 2023-04-08 0

Jika anda menjalankan pertanyaan dengan $id ditetapkan kepada 1, ia akan mendapatkan semula data untuk Acara 2, yang bermula sehari selepas tarikh tamat Acara 1:

ID Start Date Price
2 2023-03-15 0

Atas ialah kandungan terperinci Bagaimanakah pertanyaan penyertaan sendiri MySQL mendapatkan semula data yang berkaitan dengan tarikh tamat acara?. 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