Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/07/2015, 10:54
dariones123
 
Fecha de Ingreso: enero-2010
Mensajes: 22
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Obtener fila con fecha más reciente usando dos GROUP BY

Cita:
Iniciado por leonardo_josue Ver Mensaje
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.
Gracias por tu tiempo al responderme! Me queda más claro aún.. lo investigaré... saludos!