Ich versuche, die Bestellung Gesamtsumme ($) und Rechnung zählen über einen Zeitraum von 5 Tagen in einer einzigen Abfrage. Ich kann das anscheinend nicht passieren. Die aktuelle Abfrage Ich habe hier ...MySQL DATE_ADD Nutzung, 5-Tages-Intervall
SELECT
COUNT(id) as invoice_count,
SUM(orderTotal) as orders_sum,
UNIX_TIMESTAMP(created) as created
FROM ids_invoice
WHERE DATE_ADD(created, INTERVAL +1 DAY)
AND userId = 23 LIMIT 5'
Ich bin nicht ganz sicher DATE_ADD ist die richtige Funktion, die ich suche.
Derzeit erhalte ich ....
Array (
[0] => Array (
[invoice_count] => 420
[orders_total] => 97902.90
[created] => 1252596560
)
)
Array (
[0] => Array (
[invoice_count] => 68
[orders_total] => 14193.20
[created] => 1262900809
)
)
Ich mag würde, etwas mehr zu bekommen wie ...
Array (
[0] => Array (
[invoice_count] => 18
[orders_total] => 4902.90
[date] => 04-19-2010
)
)
Array (
[0] => Array (
[invoice_count] => 12
[orders_total] => 5193.20
[date] => 04-20-2010
)
)
Ich bin ziemlich neu in MySQL Datumsfunktionen so vielleicht Ich habe gerade die Funktion verpasst, die ich brauchte, wenn ich mysql-Dokumente durchging.
UPDATE Ich habe meine Abfrage aktualisiert ... Dies zieht immer noch keine Zeile für jeden Tag, für den es Rechnungen gab. Es werden nur Rechnungen ab dem 19. abgerufen, wenn Rechnungen vom 20. die userId-Kriterien erfüllen.
SELECT
COUNT(id) as invoice_count,
SUM(orderTotal) as orders_sum,
UNIX_TIMESTAMP(created) as created
FROM ids_invoice
WHERE
created BETWEEN "2010-04-19 00:00:00" AND DATE_ADD("2010-04-19 00:00:00", INTERVAL +5 DAY) AND
userId = 17
Ist es möglich für mich, Standardwerte für alle Zahlen zu erhalten, die innerhalb des angegebenen Zeitraums nicht existieren? – Webnet
@Webnet: Sie benötigen eine Liste von Datumsangaben, die den gewünschten Bereich überspannen, um JOIN in die Tabelle "IDS_INVOICE" zu verlagern, basierend auf dem Datum und dem 'created' Wert. MySQL hat keine rekursive Unterabfrage - Sie können eine Zahlentabelle erstellen oder eine CROSS JOIN-Konfiguration verwenden, um die benötigte Datumsberechnung zu erhalten. –
Ich verstehe die Logik von dem, was Sie sagen, es macht vollkommen Sinn. Sie sagen, dass ich 'SELECT COUNT (ID) als invoice_count FROM ids_invoice LEFT JOIN ids_invoice WHERE erstellt ZWISCHEN JETZT() UND DATUM_ADD (JETZT(), INTERVALL 5 TAG)' Ich bin mir sicher, dass es offensichtlich ist .... aber ich bin mir nicht sicher über die Syntax dessen, worüber du sprichst. – Webnet