Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/07/2015, 10:49
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Obtener fila con fecha más reciente usando dos GROUP BY

Hola dariones123:

Este tipo de consultas es básica en SQL, ya que es una de las más comunes y utilizadas. Me extraña que no hayas encontrado ayuda antes, pero bueno, vayamos a la ayuda... hay muchas formas de resolver la consulta... una de las más usadas, y desde mi punto de vista una de las mejores es con subconsultas y JOIN's... checa este ejemplo:

Primero tenemos la tabla:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+--------+------------+----------+---------------------+
  3. | id   | codigo | proyecto   | cantidad | fecha               |
  4. +------+--------+------------+----------+---------------------+
  5. |    1 | AAA123 | Proyecto 1 |       50 | 2015-07-06 09:05:00 |
  6. |    2 | AAA123 | Proyecto 1 |       20 | 2015-07-06 09:10:00 |
  7. |    3 | BBB456 | Proyecto 2 |       45 | 2015-07-06 09:15:00 |
  8. |    4 | BBB456 | Proyecto 2 |       30 | 2015-07-06 09:20:00 |
  9. |    5 | AAA123 | Proyecto 3 |       11 | 2015-07-06 09:25:00 |
  10. |    6 | DDD000 | Proyecto 1 |        8 | 2015-07-06 09:30:00 |
  11. |    7 | BBB456 | Proyecto 4 |       54 | 2015-07-06 09:20:00 |
  12. +------+--------+------------+----------+---------------------+
  13. 7 rows in set (0.00 sec)

Ahora, de acuerdo a lo que comentas, te interesa la MAX fecha, agrupando por codigo y proyecto... en esto no debes tener mucho problema, ya que simplemente haces algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT codigo, proyecto, MAX(fecha) max_fecha
  2.     -> FROM tabla
  3.     -> GROUP BY codigo, proyecto;
  4. +--------+------------+---------------------+
  5. | codigo | proyecto   | max_fecha          |
  6. +--------+------------+---------------------+
  7. | AAA123 | Proyecto 1 | 2015-07-06 09:10:00 |
  8. | AAA123 | Proyecto 3 | 2015-07-06 09:25:00 |
  9. | BBB456 | Proyecto 2 | 2015-07-06 09:20:00 |
  10. | BBB456 | Proyecto 4 | 2015-07-06 09:20:00 |
  11. | DDD000 | Proyecto 1 | 2015-07-06 09:30:00 |
  12. +--------+------------+---------------------+
  13. 5 rows in set (0.00 sec)

Ahora bien, dado que te interesan datos adicionales (cantidad y id) lo que haces es meter esto como una subconsulta, y utilizar un INNER JOIN para filtrar la información...

esto sería más o menos asi:

Código MySQL:
Ver original
  1. SELECT T1.* FROM tabla T1
  2. (Aquí pones la subconsulta) T2
  3. ON (aquí pones todas las condiciones)

Observa que los registros de tu tabla original DEBEN CUMPLIR CON CONDICIONES DE IGUALDAD EN TODOS LOS CAMPOS, incluyendo la FECHA... es decir, en el ON debes tener 3 condiciones de igualdad...

Haz la prueba y nos comentas, si tienes problemas postea lo que intentaste hacer y con gusto te ayudamos a corregir lo que tengas.

Saludos
Leo.