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

Agrupando registros

Estas en el tema de Agrupando registros en el foro de Mysql en Foros del Web. Una pequeña consulta de un tema con SQL: Esta es mi tabla: CREATE TABLE `aportes` ( `id` int(11) NOT NULL auto_increment, `idempleado` int(11) default NULL, ...
  #1 (permalink)  
Antiguo 20/07/2009, 10:12
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Busqueda Agrupando registros

Una pequeña consulta de un tema con SQL:
Esta es mi tabla:
CREATE TABLE `aportes` (
`id` int(11) NOT NULL auto_increment,
`idempleado` int(11) default NULL,
`idempresa` int(11) default NULL,
`ano` int(11) default NULL,
`mes` varchar(15) default NULL,
`importe` double default NULL,
`observaciones` text,
PRIMARY KEY (`id`)
)

En los datos pueden existir varios registros para un mismo idempleado, idempresa, en un mismo año y mes. Por ej:

id idempleado idempresa ano mes importe
4 10 23 2009 3 47
5 10 23 2009 4 41
6 10 23 2009 4 42
7 10 23 2009 5 45


Lo que necesito es obtener solamente el registro con el id mas alto para un idempleado,idempresa,ano,mes que coincidan
O sea de los datos anteriore querria obtener

id idempleado idempresa ano mes importe
4 10 23 2009 3 47
6 10 23 2009 4 42
7 10 23 2009 5 45

Probe con
select * from aportes where idempleado=10 group by mes
Pero asi me sale el id mas chico y me queda
id idempleado idempresa ano mes importe
4 10 23 2009 3 47
5 10 23 2009 4 41
7 10 23 2009 5 45

Agradezco ayuda! Se que se puede solucionar, pero con sql no soy muy bueno.
Saludos y Gracias
  #2 (permalink)  
Antiguo 20/07/2009, 11:10
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
Respuesta: Agrupando registros

por lo que veo el resultado que quieres es por el importe más alto y no por el id más alto...

de ser asi la consulta seria

Cita:
SELECT * FROM aportes WHERE idempleado = 10 ORDER BY importe DESC
avisas cualquier cosa
saludos!
  #3 (permalink)  
Antiguo 20/07/2009, 11:21
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Agrupando registros

No, el importe en realidad no interesa, lo que necesito obtener sean dos o mas registros en los que coinciden idempleado,idempresa,año y mes retornar el id (clave primaria de la tabla) mas alto o sea el registro mas nuevo.
Si agrupo con GROUP BY mes me los agrupa bien como quiero pero para cada grupo me retorna el id mas chico (o sea el mas viejo)
  #4 (permalink)  
Antiguo 20/07/2009, 12:14
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
Respuesta: Agrupando registros

es que como tu resultado muestra id 4, 6 y 7 por eso lo crei asi
entonces si quieres que coincidan idempleado, idempresa, año y mes el codigo seria:

Cita:
SELECT * FROM aportes WHERE idempleado = 10 AND idempresa = 23 AND ano = 2009 AND mes = 3 ORDER BY id DESC
ahora si quieres que solo muestre el id cambias el * por id o por lo que quieras que te muestre.

nos avisas!
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 05:56.