Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: KateLibby en 15 Diciembre 2017, 09:23 am



Título: ¿Cómo seleccionar los registros con la fecha más reciente?
Publicado por: KateLibby en 15 Diciembre 2017, 09:23 am
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!


Título: Re: ¿Cómo seleccionar los registros con la fecha más reciente?
Publicado por: engel lex en 15 Diciembre 2017, 16:23 pm
para esto esta order by

Código
  1. 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)


Título: Re: ¿Cómo seleccionar los registros con la fecha más reciente?
Publicado por: KateLibby en 15 Diciembre 2017, 20:31 pm
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.


Título: Re: ¿Cómo seleccionar los registros con la fecha más reciente?
Publicado por: engel lex en 15 Diciembre 2017, 22:12 pm
disculpa, no hab{ia visto eso, tienes en ese caso

Código
  1. SELECT DISTINCT(Producto), fecha, cantidad FROM tabla

o tambien


Código
  1. SELECT * FROM tabla GROUP BY (producto)

y las respectivas mezclas de estos con ORDER BY


Título: Re: ¿Cómo seleccionar los registros con la fecha más reciente?
Publicado por: KateLibby en 21 Diciembre 2017, 13:03 pm
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?

Código:
SELECT DISTINCT producto, fecha, cantidad FROM tabla ORDER BY fecha DESC

Porque tal cual está ahora, ignora el DISTINCT


Gracias


Título: Re: ¿Cómo seleccionar los registros con la fecha más reciente?
Publicado por: engel lex en 21 Diciembre 2017, 14:41 pm
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)


Título: Re: ¿Cómo seleccionar los registros con la fecha más reciente?
Publicado por: KateLibby en 21 Diciembre 2017, 15:49 pm
Sí, he probado de las dos formas pero no sé por qué no termina de funcionarme  :(


Título: Re: ¿Cómo seleccionar los registros con la fecha más reciente?
Publicado por: XafiloX en 27 Diciembre 2017, 19:16 pm
Prueba con algo como:
Código
  1. 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!