Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Traer ultimas "gestiones" de una tabla.

Estas en el tema de Traer ultimas "gestiones" de una tabla. en el foro de Mysql en Foros del Web. Buen día, Tengo un problema con una consulta SQL que no he podido solucionar por ningún lado :S, tengo dos tablas: cliente id | nombre ...
  #1 (permalink)  
Antiguo 26/12/2010, 14:31
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años, 6 meses
Puntos: 14
Traer ultimas "gestiones" de una tabla.

Buen día,

Tengo un problema con una consulta SQL que no he podido solucionar por ningún lado :S, tengo dos tablas:

cliente
id | nombre

gestiones
id | id_cliente | fecha_gestion

Teniendo esto, un cliente puede tener una o varias gestiones.

¿Cómo podría ser una consulta SQL que sólo me traiga la última gestión de cada cliente? (Esto se reconoce por la fecha de gestion fecha_gestion).

Muchas gracias por la ayuda que me puedan brindar :).
  #2 (permalink)  
Antiguo 26/12/2010, 18:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Traer ultimas "gestiones" de una tabla.

Código MySQL:
Ver original
  1. SELECT C.id `Id. Cliente`, nombre `Cliente`, MAX(G.fecha_gestion) `Ultima gestion`
  2. FROM cliente C INNER JOIN gestiones G ON C.id = G.id_cliente
  3. GROUP BY C.id;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/12/2010, 08:24
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años, 6 meses
Puntos: 14
Respuesta: Traer ultimas "gestiones" de una tabla.

Hola muchas gracias por responder, ha funcionado perfecto, la estaba haciendo mal :) .. me queda una última duda, si adicional a esto, la tabla de gestiones contara con un campo llamado "prioridad" la cual se establece de 1 a 15, cómo podría hacer para generar la gestión que tenga mayor prioridad(1) pero también por fecha, es decir, que me traiga la última gestión que tenga mas prioridad(entendiendose 1 como la mayor prioridad).

Muchas gracias por tu amable colaboración :).

Última edición por delta132; 27/12/2010 a las 08:32
  #4 (permalink)  
Antiguo 27/12/2010, 08:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Traer ultimas "gestiones" de una tabla.

En realidad no es demasiado complejo, porque la idea es que ordene las cosas por prioridad además de fecha. La consulta se vuelve relativamente simple, pero requiere hacerlo en una subconsulta porque el ORDER BY va después del GROUP BY, y eso podría hacer desaparecer algunos resultados:
Código MySQL:
Ver original
  1. SELECT id `Id. Cliente`, nombre `Cliente`, fecha_gestion `Ultima gestion`, prioridad `Prioridad`
  2.     (SELECT C.id, nombre, G.fecha_gestion, G.prioridad
  3.     FROM cliente C INNER JOIN gestiones G ON C.id = G.id_cliente
  4.     ORDER BY G.fecha_gestion DESC, G.prioridad ASC) T1
  5. GROUP BY C.id;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:44.