Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die Transaktionen der letzten 7 Tage mit leeren Zeilen in einer einzelnen MySQL-Tabelle ab?
Abrufen der Transaktionen der letzten 7 Tage und Einfügen leerer Zeilen in eine MySQL-Einzeltabelle
Um die Herausforderung des Extrahierens der Transaktionen der letzten 7 Tage zu bewältigen und das Erfassen leerer Zeilen aus einer MySQL-Datenbank, wir werden Folgendes durchlaufen Ansatz:
Generieren Sie einen Datumsbereich:
Wir beginnen mit der Erstellung einer Liste von Daten, die sich über die letzten sieben Tage erstrecken, indem wir die folgende Abfrage verwenden:
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()
Mit Transaktion beitreten Tabelle:
Als nächstes verknüpfen wir diese generierte Datumsliste mit der Transaktionstabelle, um gegebenenfalls die entsprechenden Verkaufsbeträge zu erhalten:
SELECT t1.purchase_date, coalesce(SUM(t1.amount+t2.amount), 0) AS amount from
( 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() )t1 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
Vollständige Abfrage:
select t1.purchase_date, coalesce(SUM(t1.amount+t2.amount), 0) AS amount from ( 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() )t1 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
Mithilfe dieser umfassenden Abfrage können wir die Gesamtverkäufe für jede einzelne ermitteln der letzten sieben Tage, effektiv einschließlich leerer Zeilen für Tage ohne Transaktionen.
Das obige ist der detaillierte Inhalt vonWie rufe ich die Transaktionen der letzten 7 Tage mit leeren Zeilen in einer einzelnen MySQL-Tabelle ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!