Estoy tratando de seleccionar la suma total del pedido ($) y el recuento de facturas durante un período de 5 días en una sola consulta. Parece que no puedo hacer que esto suceda. La consulta actual que tengo es aquí ...Uso de MySQL DATE_ADD, intervalo de 5 días
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'
No estoy del todo seguro de DATE_ADD es la función correcta que estoy buscando.
Actualmente me estoy haciendo ....
Array (
[0] => Array (
[invoice_count] => 420
[orders_total] => 97902.90
[created] => 1252596560
)
)
Array (
[0] => Array (
[invoice_count] => 68
[orders_total] => 14193.20
[created] => 1262900809
)
)
me gustaría conseguir algo más como ...
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
)
)
Soy bastante nuevo a las funciones de fecha MySQL así que quizás Me perdí la función que necesitaba al revisar los documentos de mysql.
ACTUALIZACIÓN He actualizado mi consulta ... Esto todavía no saca una fila por cada día que hubo facturas. Solo está extrayendo facturas desde el 19 cuando hay facturas desde el 20 que cumplen los criterios userId.
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
¿Es posible para mí para obtener los valores predeterminados para las figuras que no existen dentro del plazo especificado? – Webnet
@Webnet: necesita una lista de fechas que abarque el rango que desea, para IZQUIERDA UNIRSE en la tabla 'IDS_INVOICE' en función de la fecha y el valor 'creado'. MySQL no tiene subconsulta recursiva: puede crear una tabla de números o utilizar una configuración CROSS JOIN para obtener el cálculo de fecha que necesita. –
Entiendo la lógica de lo que dices, tiene perfecto sentido. Estás diciendo que necesito 'SELECT COUNT (id) como invoice_count FROM ids_invoice IZQUIERDA UNIR ids_invoice WHERE creado ENTRE AHORA() Y DATE_ADD (AHORA(), INTERVALO DE 5 DÍAS)' Estoy seguro de que es obvio ... pero no estoy seguro de la sintaxis de lo que estás hablando. – Webnet