Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Data Transaksi untuk 7 Hari Terakhir, Termasuk Hari Tanpa Transaksi dalam MySQL?
Memilih Baris daripada 7 Hari Terakhir, Termasuk Baris Kosong dalam Jadual Tunggal
Dalam pangkalan data MySQL, anda ingin mendapatkan semula transaksi daripada 7 hari yang lalu dan hitung jumlah jualan untuk setiap hari. Walau bagaimanapun, anda ingin memastikan bahawa walaupun tiada data tersedia untuk hari tertentu, baris kosong disertakan dalam set hasil.
Anda telah cuba menangani isu ini, tetapi pertanyaan anda hanya mendapatkan semula hari dengan urus niaga. Untuk mencapai hasil yang diingini, anda perlu mengubah suai pendekatan anda.
Penyelesaian:
Penyelesaian melibatkan penggunaan subquery untuk menjana senarai tarikh dalam tempoh 7 hari yang lalu . Senarai ini kemudian dibiarkan bercantum dengan jadual urus niaga untuk mencipta set hasil yang komprehensif.
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()
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
Pertanyaan ini menggabungkan hari yang dijana dengan jadual urus niaga, memastikan bahawa walaupun untuk hari tanpa transaksi, baris kosong disertakan. Set keputusan akhir akan memaparkan tarikh pembelian dan jumlah jualan selama 7 hari yang lalu, dengan baris kosong yang menunjukkan tiada transaksi untuk hari tersebut.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data Transaksi untuk 7 Hari Terakhir, Termasuk Hari Tanpa Transaksi dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!