¿Cómo seleccionar los registros con la fecha más reciente?

Iniciado por KateLibby, 15 Diciembre 2017, 09:23 AM

0 Miembros y 1 Visitante están viendo este tema.

KateLibby

Buenos días! No sé cómo hacer la siguiente consulta, a ver si me podéis ayudar. Tengo la siguiente tabla:








ProductoFechaCantidad
Prod 11-12-17
5
Prod 12-12-17
3
Prod 15-12-17
1
Prod 21-12-17
8
Prod 26-12-17
3

Y quiero que me devuelva de cada producto el registro con fecha más reciente. Así:






ProductoFechaCantidad
Prod 15-12-17
1
Prod 26-12-17
3

Cómo lo hago? Gracias de antemano!

engel lex

para esto esta order by

Código (sql) [Seleccionar]
SELECT * FROM tabla ORDER BY campo

https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html

puedes usar al fin ASC o DESC (ordenado ascendiente o descendiente)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

KateLibby

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.

engel lex

disculpa, no hab{ia visto eso, tienes en ese caso

Código (sql) [Seleccionar]
SELECT DISTINCT(Producto), fecha, cantidad FROM tabla

o tambien


Código (sql) [Seleccionar]
SELECT * FROM tabla GROUP BY (producto)

y las respectivas mezclas de estos con ORDER BY
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

KateLibby

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

engel lex

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)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

KateLibby

Sí, he probado de las dos formas pero no sé por qué no termina de funcionarme  :(

XafiloX

Prueba con algo como:
Código (sql) [Seleccionar]
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!