Dalam pertanyaan ini, kami menyasarkan untuk mendapatkan semula semua transaksi dari tujuh hari yang lalu, memastikan bahawa walaupun hari tanpa jualan direkodkan termasuk dalam keputusan. Kami menggunakan teknik yang menggabungkan dua pertanyaan berasingan untuk mencapai hasil ini.
Pertama sekali, kami menghitung semua tarikh dalam tempoh tujuh hari yang lalu menggunakan pernyataan SELECT bersarang. Pertanyaan ini berkesan menjana senarai tarikh yang berfungsi sebagai asas untuk data transaksi kami.
SELECT DATE_FORMAT(a.Date,'%Y-%m-%d') as purchase_date, '0' as amount FROM ( SELECT curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c ) a WHERE a.Date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
Seterusnya, kami menggabungkan senarai tarikh yang komprehensif ini dengan pertanyaan yang mengagregatkan data jualan harian daripada jadual transaksi kami. Gabungan ini memastikan bahawa kami memasukkan kedua-dua urus niaga yang direkodkan dan baris kosong untuk tarikh tanpa aktiviti.
LEFT JOIN ( SELECT DATE_FORMAT(purchase_date, '%Y-%m-%d') as purchase_date, COALESCE(SUM(amount), 0) AS amount FROM transactions WHERE purchase_date BETWEEN NOW() - INTERVAL 7 DAY AND NOW() AND vendor_id = 0 GROUP BY purchase_date )t2 ON t2.purchase_date = t1.purchase_date GROUP BY t1.purchase_date ORDER BY t1.purchase_date DESC
Dengan menyepadukan kedua-dua pertanyaan ini dengan lancar, kami membina satu jadual dengan berkesan yang menyenaraikan semua tarikh secara kronologi dalam julat yang ditentukan, dengan data jualan yang sepadan atau sifar apabila tiada transaksi berlaku.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Baris Kosong dalam Pertanyaan MySQL Menunjukkan Transaksi Harian untuk 7 Hari Terakhir?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!