Buenos días! No sé cómo hacer la siguiente consulta, a ver si me podéis ayudar. Tengo la siguiente tabla:
Producto | Fecha | Cantidad |
Prod 1 | 1-12-17 | 5 |
Prod 1 | 2-12-17 | 3 |
Prod 1 | 5-12-17 | 1 |
Prod 2 | 1-12-17 | 8 |
Prod 2 | 6-12-17 | 3 |
Y quiero que me devuelva de cada producto el registro con fecha más reciente. Así:
Producto | Fecha | Cantidad | Prod 1 | 5-12-17 | 1 | Prod 2 | 6-12-17 | 3 |
Cómo lo hago? Gracias de antemano! |
para esto esta order by
SELECT * FROM tabla ORDER BY campo
https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html (https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html)
puedes usar al fin ASC o DESC (ordenado ascendiente o descendiente)
Pero si no me equivoco, con el ORDER BY me apareceran los productos repetidos, ¿no? Yo quiero que si el Prod 1 está 2 veces con fechas diferentes, sólo me aparezca el registro de la fecha más reciente.
disculpa, no hab{ia visto eso, tienes en ese caso
SELECT DISTINCT(Producto), fecha, cantidad FROM tabla
o tambien
SELECT * FROM tabla GROUP BY (producto)
y las respectivas mezclas de estos con ORDER BY
Gracias por tu respuesta.
Creo que me serviría con el DISTINCT y ORDER BY, pero no puedo usar los dos en el mismo SELECT. ¿Hay alguna forma de hacer esto?
SELECT DISTINCT producto, fecha, cantidad FROM tabla ORDER BY fecha DESC
Porque tal cual está ahora, ignora el DISTINCT
Gracias
Así como está debería mostrarte por fecha productos no repetidos, de todas formas también tienes group by, que los agrupará por un campo similar (se usa al final igual que order by)
Sí, he probado de las dos formas pero no sé por qué no termina de funcionarme :(
Prueba con algo como:
SELECT producto, fecha, cantidad FROM (SELECT * FROM tabla ORDER BY fecha DESC) s GROUP BY producto
Si por algún casual usas MySQL y diese un error asegúrate de que tienes desactivado ONLY_FULL_GROUP_BY.
Un saludo!