Heim > Datenbank > MySQL-Tutorial > Wie füge ich leere Zeilen in eine MySQL-Abfrage ein, die die täglichen Transaktionen der letzten 7 Tage anzeigt?

Wie füge ich leere Zeilen in eine MySQL-Abfrage ein, die die täglichen Transaktionen der letzten 7 Tage anzeigt?

Linda Hamilton
Freigeben: 2024-12-29 18:13:09
Original
541 Leute haben es durchsucht

How to Include Empty Rows in a MySQL Query Showing Daily Transactions for the Last 7 Days?

Integration leerer Zeilen in eine MySQL-Einzeltabellenabfrage für die letzten 7 Tage

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()
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage