Consulta MYSQL

NeB1

Buenas, tengo una consulta tal que

SELECT t1.*,t2.*, SUM(t1.`total`) AS `total_dia`
FROM `PNP_payments` AS t1
	LEFT JOIN `PNP_users` AS t2 ON (t1.`user_id` = t2.`id`) 
WHERE DATE(t1.`orderdate`) = '%s'
GROUP BY t2.`id`

Que esperaría que agrupara todos los 'pedidos' de un día en concreto, y me sacara la suma de ellos en el nuevo campo 'total_dia', pero en lugar de eso, me coje solo un valor de todos los pedidos del día, por ejmplo:

pedido       total
1                4€
2                5€
3                6€

me devuelve total_dia = 4€

Se hace así como estoy haciendo?

dagavi

"Que esperaría que agrupara todos los 'pedidos' de un día en concreto,"

GROUP BY t2.`id`

Si quieres que te agrupe los pedidos por día, la agrupación debería estar en el GROUP BY.

1 respuesta
NeB1

#2 es que agrupo realmente por usuario, y en el where solo miro una fecha determinada (Porque quiero desglosar, de un día en concreto, el total de cada usuario). Aún así, el resultado es el mismo...

LOc0

Esto se me da fatal (y además estoy hoy medio malo), ¿pero no deberías sacar al principio de la consulta sólo los campos que intervienen en el group by? A ver si se va a hacer la picha un lío con t1.* y t2.*

Ejemplo:

SELECT t1.user_id AS user_id, SUM(t1.total) AS total_dia FROM PNP_payments AS t1, PNP_users AS t2 WHERE (user_id = t2.id) AND DATE(t1.orderdate) = '%s' GROUP BY user_id

Salu2 ;)

dagavi

Todo lo que sale en el SELECT directamente (sin estar en funciones de agregación, etc.) tiene que estar en GROUP BY.

1 respuesta
PiradoIV

¿y quieres hacer una consulta de un día concreto o que te salga el total de cada día?

PiradoIV

qué tal si el GROUP BY lo cambias por:

GROUP BY DATE(t1.`orderdate`)

Edit: #8 buena xDD

1 respuesta
NeB1

#7, probaré, lo malo es que así tendré que hacer una consulta por cada usuario, no? (me molaba el tema de hacerlo con una única consulta)

#7, #5, Se me había ido la olla infinito o más... o sea, hago un SUM(blablabla) AS TOTAL_DIA
y yo estaba haciendo $res['total'] xDDDDDD

1 respuesta
JuAn4k4

No es un

GROUP BY (user_id, orderdate)

¿?

user_id | order_date | total
1               dia 1               x€
1               dia 2               y€
...
2              dia X                x€
SELECT t1.user_id, t1.orderdate, SUM(t1.total) AS total_dia
FROM PNP_payments AS t1
GROUP BY t1.user_id, t1.orderdate
1 respuesta
NeB1

#9 eso supongo que también valdría. El tema es que no me expliqué bien.

Cuando hago una consulta de esas, solo necesito saber el total de 1 día agrupado por cada usuario. Aunque me apunto lo que me comentas porque es posible que también necesite una agrupación dia/usuario en varios dias...

JuAn4k4

where order_date between ...

where order_date <mañana0:00:000 and order_date >= hoy:0:00:000

JuAn4k4

duplicado

Usuarios habituales

  • JuAn4k4
  • NeB1
  • PiradoIV
  • dagavi
  • LOc0