Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/07/2012, 12:55
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Listados de ultimos movimientos

Hola carlosdr:

Puedes hacerlo con un INNER JOIN, más o menos así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +-----------+------------+--------+
  3. | dni       | fecha      | estado |
  4. +-----------+------------+--------+
  5. | 12345678Y | 2011-05-24 | ALTA   |
  6. | 87654321B | 2011-06-10 | ALTA   |
  7. | 12345678Y | 2012-01-20 | BAJA   |
  8. | 87654321B | 2012-03-05 | BAJA   |
  9. | 12345678Y | 2012-05-07 | ALTA   |
  10. +-----------+------------+--------+
  11. 5 rows in set (0.01 sec)
  12.  
  13. mysql> SELECT T1.* FROM tabla T1
  14.     -> INNER JOIN
  15.     -> ( SELECT dni, MAX(fecha) max_fecha
  16.     ->   FROM tabla
  17.     ->   GROUP BY dni) T2 ON T1.dni = T2.dni AND T1.fecha = T2.max_fecha;
  18. +-----------+------------+--------+
  19. | dni       | fecha      | estado |
  20. +-----------+------------+--------+
  21. | 87654321B | 2012-03-05 | BAJA   |
  22. | 12345678Y | 2012-05-07 | ALTA   |
  23. +-----------+------------+--------+
  24. 2 rows in set (0.00 sec)

Saludos
Leo.