Heim > Datenbank > MySQL-Tutorial > Wie rufe ich Transaktionsdaten der letzten 7 Tage ab, einschließlich der Tage ohne Transaktionen in MySQL?

Wie rufe ich Transaktionsdaten der letzten 7 Tage ab, einschließlich der Tage ohne Transaktionen in MySQL?

Susan Sarandon
Freigeben: 2024-12-31 14:38:10
Original
865 Leute haben es durchsucht

How to Retrieve Transaction Data for the Last 7 Days, Including Days with No Transactions in MySQL?

Auswählen von Zeilen der letzten 7 Tage, einschließlich leerer Zeilen in einer einzelnen Tabelle

In einer MySQL-Datenbank möchten Sie Transaktionen abrufen der letzten 7 Tage und berechnen Sie den Gesamtumsatz für jeden Tag. Sie möchten jedoch sicherstellen, dass auch dann eine leere Zeile im Ergebnissatz enthalten ist, wenn für einen bestimmten Tag keine Daten verfügbar sind.

Sie haben versucht, dieses Problem zu beheben, aber Ihre Abfrage ruft nur die Tage mit ab Transaktionen. Um das gewünschte Ergebnis zu erzielen, müssen Sie Ihren Ansatz ändern.

Lösung:

Die Lösung besteht darin, mithilfe einer Unterabfrage eine Liste der Daten innerhalb der letzten 7 Tage zu erstellen . Diese Liste wird dann mit der Transaktionstabelle verknüpft, um einen umfassenden Ergebnissatz zu erstellen.

  1. Erstellen Sie eine Liste mit Daten:
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
  1. Mit Transaktionen beitreten Tabelle:
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
Nach dem Login kopieren
  1. Gruppen- und Bestellergebnisse:
GROUP BY t1.purchase_date
ORDER BY t1.purchase_date DESC
Nach dem Login kopieren

Diese Abfrage kombiniert die generierten Tage mit Die Transaktionstabelle stellt sicher, dass auch an Tagen ohne Transaktionen leere Zeilen enthalten sind. Der endgültige Ergebnissatz zeigt die Kaufdaten und Gesamtverkaufsbeträge der letzten 7 Tage an, wobei leere Zeilen angeben, dass an diesen Tagen keine Transaktionen stattgefunden haben.

Das obige ist der detaillierte Inhalt vonWie rufe ich Transaktionsdaten der letzten 7 Tage ab, einschließlich der Tage ohne Transaktionen in MySQL?. 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