Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

select Max(fecha) y otros campos

Estas en el tema de select Max(fecha) y otros campos en el foro de Mysql en Foros del Web. Hola porfa una ayuda con esto. Tengo una tabla con 4 columnas idregistro,idproceso, fecha, mensaje 1, 23, 2010-01-01, mensaje1 2, 23, 2010-05-09, mensaje2 3, 30, ...
  #1 (permalink)  
Antiguo 06/09/2010, 23:03
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
select Max(fecha) y otros campos

Hola porfa una ayuda con esto.

Tengo una tabla con 4 columnas

idregistro,idproceso, fecha, mensaje

1, 23, 2010-01-01, mensaje1
2, 23, 2010-05-09, mensaje2
3, 30, 2010-09-01, mensaje3
4, 30, 2005-01-01, mensaje4
5, 31, 2005-09-01, mensaje5

el campo idproceso puede tener duplicados.

y quiero que el resultado del select me muestre las 4 columnas ,agrupando por proceso con el valor maximo de fecha

quedaria asi la respuesta

2, 23, 2010-05-09, mensaje2
3, 30, 2010-09-01, mensaje3
5, 31, 2005-09-01, mensaje5

He hecho esto:
select idregistro, Idproceso, max(fecha), mensaje from tabla group by Idproceso

pero no me muesta en las columnas idregistro y mensaje los valores correspondientes.

Gracias por cualquier orientacion sobre esta consulta ya que llevo largo tiempo tratando de resolver esto y no he podido.

Última edición por msimsi; 06/09/2010 a las 23:08
  #2 (permalink)  
Antiguo 07/09/2010, 00:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: select Max(fecha) y otros campos

primero ordenas y luego agrupas

SELECT T1.idregistro, T1.Idproceso, T1.fecha, T1.mensaje FROM (SELECT idregistro, Idproceso, fecha, mensaje from tabla ORDER BY Idproceso, fecha DESC)T1 GROUP BY T1.Idproceso
  #3 (permalink)  
Antiguo 07/09/2010, 08:49
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: select Max(fecha) y otros campos

Gracias por la ayuda jurena. Funciona perfecto! Y si ahora quisiera cruzar estos datos por el campo idproceso con otra tabla?

Es decir el select anterior me genera una tabla donde hay un campo llamado idproceso. Tengo otra tabla que me gustaria cruzar con este resultado por idproceso para que al final me quedara algo asi.

La tabla2 es asi
idproceso, info
23, casa
30, carro
31, mesa

y el resultado que buscaria seria

2, 23, 2010-05-09, mensaje2,casa
3, 30, 2010-09-01, mensaje3,carro
5, 31, 2005-09-01, mensaje5,mesa

Gracias.

Última edición por msimsi; 07/09/2010 a las 09:02
  #4 (permalink)  
Antiguo 07/09/2010, 09:13
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: select Max(fecha) y otros campos

Ya lo logre hacer. La solucion es:

SELECT T1.idregistro, T1.Idproceso, T1.fecha, T1.mensaje ,T2.dato FROM (SELECT idregistro, Idproceso, fecha, mensaje from tabla ORDER BY Idproceso, fecha DESC)T1, tabla2 T2 where T1.idproceso=T2.idproceso GROUP BY T1.Idproceso

Etiquetas: campos, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:19.