Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/11/2016, 14:45
Lucky_Sky
 
Fecha de Ingreso: noviembre-2011
Ubicación: Sevilla
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 1
Select agrupado y con fecha mayor

Hola Buenas tardes, os comento el problema que lleva unos días haciendo que me devane los sesos para conseguir hacerlo funcionar (y no lo he hecho, por eso recurro a vuestra ayuda)

Tengo una tabla en la que se guardan las diferentes gestiones que se realizan con los clientes.

La estructura de la tabla es la siguiente

id_gestion
id_vendedor
id_cliente
id_inmueble
fecha
hora
tipo (el tipo de gestion que se hace con el cliente char(1))

un juego de datos de prueba podría ser este:

418 27 872 H250 2016-11-25 10:00:00 A
419 27 872 H250 2016-11-25 10:30:00 C
420 27 872 H250 2016-11-25 17:00:00 V
421 27 872 H250 2016-11-25 20:00:00 R
422 28 900 P637 2016-11-28 17:00:00 A
423 28 900 P637 2016-11-29 10:00:00 B
424 33 150 S400 2016-11-29 11:00:00 A
425 33 150 S400 2016-11-30 09:00:00 P

Los tipos que se pueden dar son
A C V O R T B (se consideran cliente abierto)
P (se considera cliente pendiente)
B X (se considera cliente cerrado)

estos datos los tengo que mostrar en una página en php con los siguientes requisitos:

- Mostrar 20 registros por Estado del cliente
- Tengo que mostrar sólo el último registro por cliente
- En funcion de como se consiedere el cliente (abierto, pendiente, cerrado) tiene que aparecer en un listado distinto.

Ejemplo (para ese juego de datos):

Clientes Abiertos:
421 27 872 H250 2016-11-25 20:00:00 R
Clientes Pendientes:
425 33 150 S400 2016-11-30 09:00:00 P
Clientes Cerrados:
423 28 900 P637 2016-11-29 10:00:00 B

Ya creo haber llegado a la conclusión de que lo que primero que tengo que hacer es que la consulta SQL me de el registro con la fecha/hora más alta por cliente y después, sacar los 20 más recientes con tipo "A C V O R T B", luego los 20 más recientes con tipo "P" y por último, de esa consulta, sacar los 20 más recientes con tipo "B X".

El problema principal que tengo, es que haciendo:

Select * from gestiones group by id_cliente order by fecha desc, hora desc

me saca la más antigua en vez de la más reciente y ya no sé si es que me equivoco en el razonamiento o en la forma de hacerlo, así que agradecería cualquier ayuda que me pudiérais brindar.

¡Gracias por leerme y de antemano por la ayuda!