Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/06/2013, 14:42
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Coger el ultimo valor en gruop by

Hola Pentaxeros:

Esta tipo de consultas es una de las que más preguntan los usuarios en el foro y en general una de las más usuales en la red... cada vez que contesto me soprende el hecho de que habiendo contestado tantas veces no hayan encontrado ninguna ayuda que les haya permitido sacar la consulta por tu cuenta...

Hay muchas formas de hacerlo, pero la más común es utilizando una subconsulta... suponiendo que tu campo fecha, sea efectivamente de tipo DATE, podrías obtener la última fecha para cada usuario asi:

Código MySQL:
Ver original
  1. mysql> SELECT idcliente, MAX(fecha) max_fecha FROM tablaB GROUP BY idcliente;
  2. +-----------+------------+
  3. | idcliente | max_fecha  |
  4. +-----------+------------+
  5. |         1 | 2012-10-16 |
  6. |         2 | 2012-10-15 |
  7. |         3 | 2012-10-14 |
  8. +-----------+------------+
  9. 3 rows in set (0.00 sec)

Ahora, utilizas esto como un filtro para tus registros... es decir, si tu haces algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT TA.*, TB.id, TB.estado
  2.     -> FROM tablaA TA
  3.     -> INNER JOIN tablaB TB ON TA.idcliente = TB.idcliente;
  4. +-----------+--------+-----------+------+--------+
  5. | idcliente | nombre | ciudad    | id   | estado |
  6. +-----------+--------+-----------+------+--------+
  7. |         1 | Manolo | Madrid    |    1 | A      |
  8. |         1 | Manolo | Madrid    |    2 | B      |
  9. |         1 | Manolo | Madrid    |    3 | C      |
  10. |         2 | Paco   | Barcelona |    4 | B      |
  11. |         2 | Paco   | Barcelona |    5 | C      |
  12. |         3 | Lucia  | Santander |    6 | B      |
  13. +-----------+--------+-----------+------+--------+
  14. 6 rows in set (0.00 sec)

Obtienes todos los registros... lo único que tienes que hacer es AGREGAR UN INNER JOIN adicional con la subconsulta de ayer y preguntar por los registros que cumpla con que la fecha de tu tablaB sea igual a la MAX_FECHA de la subconsulta.

Como dije, ejemplos hay muchísimos en la red y en este mismo foro:

http://www.forosdelweb.com/f86/sacar...nadas-1043881/

http://www.forosdelweb.com/f86/sql-p...istros-982062/


http://www.forosdelweb.com/f86/duda-...erchas-925080/

Dale un vistazo y te sugiero que en el futuro utilices la herramienta de búsqueda del foro para ver si ya se posteo algo semejante a lo que necesitas.

Saludos
Leo.