Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/03/2015, 12:17
jleoalvarez
 
Fecha de Ingreso: marzo-2015
Mensajes: 7
Antigüedad: 9 años, 8 meses
Puntos: 0
Pregunta Seleccionar ultimo registro de un grupo con condicion

Buen día amigos, necesito su colaboración, no logro realizar una consulta y espero que me puedan ayudar.

Tengo una tabla llamada registro, en ella almaceno los datos de personas que paguen un servicio mensualmente o semestralmente, deseo mostrar al usuario los que están próximos a expirar para que el pueda avisarles y que renueven el servicio y la estructura de la tabla es la siguiente:

Tabla registro:

idregistro
personas_documento
fecha_inicio
fecha_fin
tipo
valor


el id es un valor unico y es incremental, luego esta el documento de la persona, la fecha de inicio que es cuando pago por el servicio y la fecha final es el dia que vence esa suscripcion, el tipo es si es mensual o semestral y el valor es lo que pago por ese servicio.

Aqui viene mi problema

Resulta que he logrado mostrar los resgistros que se venceran dentro de 3 o menos dias teniendo encuenta la fecha actual de la siguiente manera:

Código SQL:
Ver original
  1. SELECT*FROM registro WHERE datediff(fecha_fin,variable_fecha_actua)<=3

el resultado son los registros en los que su fecha final sea menor o igual a 3 dias y mostrara al usuario esa informacion.

Ahora teniendo en cuenta esto, el usuario le comunicara a la persona y ella decidirá renovar su suscripción de manera que la fecha inicial será la fecha final y la nueva fecha final será dentro de uno o seis meses segun sea el caso.
El registro anterior seria el siguiente:

idregistro | personas_documento | fecha_inicio | fecha_fin | tipo | valor |
1 | 55555 | 2015-03-01| 2015-04-01 | Mensual | 30000|

El nuevo registro quedaría asi:

idregistro | personas_documento | fecha_inicio | fecha_fin | tipo | valor |
2 | 55555 | 2015-04-01| 2015-05-01 | Mensual | 30000|
De manera que tenemos dos registros de a misma persona, pero si realizo de nuevo la consulta:
Código SQL:
Ver original
  1. SELECT*FROM registro WHERE datediff(fecha_fin,variable_fecha_actua)<=3
Me mostrará que el registro va a expirar porque claramente cumple con la condicion del where el primer registro.
Lo que quiero es que al renovar la suscripción deje de mostrarme el registro anterior y me tome el registro mas nuevo, teniendo en cuanta que habrán muchas personas registradas en el sistema si hace esto ya no me mostrará que el registro va a expirar sino que está al día.
Algunas nociones que tengo son seleccionar el idregistro mayor de cada persona y realizar la condición pero no se como hacerlo porque no tengo idea realmente

Última edición por jleoalvarez; 31/03/2015 a las 12:23