Bei dieser Abfrage zielen wir darauf ab, alle Transaktionen der letzten sieben Tage abzurufen, um dies sicherzustellen Auch Tage ohne erfasste Verkäufe werden in die Ergebnisse einbezogen. Um dieses Ergebnis zu erzielen, verwenden wir eine Technik, die zwei separate Abfragen kombiniert.
Zuerst zählen wir alle Daten innerhalb der letzten sieben Tage mithilfe einer verschachtelten SELECT-Anweisung auf. Diese Abfrage generiert effektiv eine Datumsliste, die als Grundlage für unsere Transaktionsdaten dient.
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()
Als nächstes kombinieren wir diese umfassende Datumsliste mit einer Abfrage, die tägliche Verkaufsdaten aus unserer Transaktionstabelle aggregiert. Dieser Join stellt sicher, dass wir sowohl aufgezeichnete Transaktionen als auch leere Zeilen für Daten ohne Aktivität einbeziehen.
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
Durch die nahtlose Integration dieser beiden Abfragen erstellen wir effektiv eine einzige Tabelle, die alle Daten innerhalb des angegebenen Bereichs chronologisch auflistet. mit entsprechenden Verkaufsdaten oder Nullen, wenn keine Transaktionen stattgefunden haben.
Das obige ist der detaillierte Inhalt vonWie füge ich leere Zeilen in eine MySQL-Abfrage ein, die die täglichen Transaktionen der letzten 7 Tage anzeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!