Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/03/2011, 05:15
joepicha
 
Fecha de Ingreso: marzo-2011
Ubicación: Cádiz
Mensajes: 7
Antigüedad: 13 años, 1 mes
Puntos: 0
no logro filtrar correctamente los campos

Buenos días o tardes ya. Soy nuevo en este foro y es mi primer post. Tras un reciente cambio de trabajo me he visto obligado a volver a tocar una BD(no hecha por mi) y no logro hacer la consulta requerida por mi supervisor. Llevo como 2 años sin hacer consultas y la verdad no consigo ver lo que quiero.

La tabla en cuestion es historial y tiene como campos codigo, usuario, fecha y tipo

En esa tabla se muestra si los usuarios están activos o no(por la variable tipo. Lo que tengo que hacer es:

Código SQL:
Ver original
  1. SELECT MAX(codigo) AS Cod,usuario,MAX(fecha) AS Fecha
  2. FROM historialusuario GROUP BY usuario ORDER BY usuario

Esto me devuelve el codigo secuencial de cada empleado, su codigo de usuario y la fecha en la que se dio de alta/baja. Hago el máximo porque se puede dar el caso de que en la misma fecha se de de alta y de baja a la vez a un usuario, y para saber la última inserción en la BD pues pillo el máximo de los codigos secuenciales asociados a ese usuario.

Pongo ejemplo de lo que muestra la tabla historialusuario y luego de la consulta mia.

historialusuario
codigo usuario fecha tipo
1 1 hoy A
2 1 hoy B
3 1 hoy A
4 1 hoy B
5 2 ayer A
6 2 hoy B


como podeis ver, al usuario 1 se le ha dado de alta y de baja hoy mismo varias veces. Lo que yo quiero como resultado es que me muestre:

codigo usuario fecha tipo
4 1 hoy B
6 2 hoy B

y con la consulta que puse arriba me lo muestra bien salvo la columna tipo que no se como unirla si mediante subconsulta, inner......

acepto sugerencias y/o algún ejemplo vendría bien :)

Saludos!
PD: si el hilo está colocado incorrectamente, muevanlo :)


RESUELTO:
por si alguien lo quiere
Código MySQL:
Ver original
  1. select codigo,usuario,fecha,tipo from historialusuario
  2. where (codigo,usuario,fecha ) = ( select max(codigo) as Cod,usuario,max(fecha) as Fecha
  3. from historialusuario as h where h.usuario=historialusuario.usuario  group by usuario)

Última edición por joepicha; 24/03/2011 a las 06:00