Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengekstrak Data dengan Tarikh Hilang daripada Jadual MySQL Menggunakan Jadual Kalendar?
Pengenalan:
Tugas yang sedang dijalankan melibatkan pengambilan data daripada MySQL jadual yang merangkumi nilai berkaitan tarikh. Matlamatnya adalah untuk memilih semua data yang termasuk dalam julat tarikh yang ditentukan, termasuk keadaan apabila data tiada untuk tarikh tertentu.
Pertanyaan:
Pertanyaan yang disediakan, SELECT data DARI tbl MANA tarikh ANTARA tarikh1 DAN tarikh2, secara berkesan memilih data dalam julat yang ditetapkan. Walau bagaimanapun, ia gagal mengambil kira tarikh kosong dalam selang waktu tersebut.
Penyelesaian:
Untuk menangani isu ini, konsep "jadual kalendar" boleh digunakan. Jadual ini menyediakan cara berstruktur untuk mewakili tarikh, membolehkan manipulasi mudah dan kemasukan tarikh yang hilang.
Pelaksanaan Jadual Kalendar:
Kod MySQL berikut boleh digunakan untuk buat jadual kalendar:
CREATE TABLE ints (i INTEGER); INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
Untuk menjana jadual kalendar yang menjangkau tarikh yang ditentukan julat:
SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date FROM ints a JOIN ints b ORDER BY a.i * 10 + b.i
Pertanyaan ini akan menjana senarai tarikh dalam julat '2009-06-25' dan '2009-07-01'.
Menggabungkan Kalendar dan Jadual Data:
Di sebelah kiri menyertai jadual kalendar ('cal') dengan jadual asal ('tbl') pada medan 'tarikh', kita boleh memperoleh hasil yang diingini:
SELECT cal.date, tbl.data FROM ( SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date FROM ints a JOIN ints b ORDER BY a.i * 10 + b.i ) cal LEFT JOIN tbl ON cal.date = tbl.date WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';
Pertanyaan ini akan mengembalikan semua tarikh dalam julat yang ditentukan, termasuk yang mempunyai nilai data kosong (yang akan dipaparkan sebagai NULL).
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekstrak Data dengan Tarikh Hilang daripada Jadual MySQL Menggunakan Jadual Kalendar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!