El diseno basico es el siguiente:
Prestamos: la cual contiene los registros de prestamos realizados por personas, y que contiene toda la informacion general de estos, nombre, domicilio, # de prestamo, etc
Categoria el Prestamo: el cual lleva una lista de las categorias en que puede estar un cliente, ej: Localizado, Ilocalizado
Subcategoria del prestamo: una lista de las subcategorias que puede tener cada categoria, ej:
Categoria subcategoria
Localizado Telefonicamente
Localizado En casa
Ilocalizado En trabajo
etc etc
ahora bien, a estas personas se les llama por telefono para realizar diferentes gestiones, cobro administrativo, cobro judicial, actualizacion de datos, etc
por lo tanto se relaciona con una tabla llamada GESTIONES, la cual es una bitacora de todas las llamadas telefonicas hechas a los clientes, esto significa que un prestamo puede tener muuuuchas gestiones, ahora bien cada gestion tiene una ACCION y una REACCION o resultado, por lo cual hay 2 tablas mas, una para las acciones (llamada por telefono, envio de fax, envio de email, envio de carta, etc) y las REACCIONES (cliente no reconoce deuda, cliente no estaba, cliente cambio domicilio etc)
ahora bien, por lo general yo siempre debo mostrar a parte de todas la informacion general, la informacion de la ultima gestion, pero la relacion de PRESTAMOS a GESTIONES solo es por el No. de prestamo por lo cual, un INNER JOIN siempre me devolvera n filas segun coincidencias en GESTIONES pero yo solo quiero coincidencias con la ultima gestion realizada, este es el primer problema, que aunque ya lo resolvi no me parece muy correcta la forma.
El otro problema es que quiero sacar un reporte que me liste todos los prestamos que tienen como resultado de la ultima gestion una cierta reaccion, pero por ejemplo yo podria llamarle 3 veces a un cliente y obtener la misma reaccion, pero a mi me interesa la ultima, o peor aun, la primera llamada no obtuve resultados, la segunda llamada tuve de reaccion_id 5 (por eje.) pero ya en la tercera llamada tuve como reaccion_id=7 entonces, este caso no deberia salir en el reporte, ya que me interesa el resultado de la ultima gestion, y es aqui, donde ya el diseño siento que topa.
Que me podrian sugerir? si necesitan el diseno en si, pues con gusto puedo ver como lo pongo, aqui les dejo el codigo de como voy hasta ahorita, pero aun asi no me resuelve nada.
Código:
este me repite una fila por cada gestion, aunque la fila esta bien, me repite filas lo que significa que algo se me ha quedado fuera, espero y me puedan ayudar con el problema.select a.prestamo_id, a.prestamo_deudor, a.prestamo_direccion, d.categoria_nombre, e.subcategoria_nombre, a.prestamo_notas, (select top 1 c.resultado_nombre from gestiones b inner join resultados_Gestiones c on (b.resultado_id=c.resultado_id) where a.prestamo_id=b.prestamo_id and b.resultado_id=6 order by gestion_id desc) as resultado_gestion FROM prestamos a INNER JOIN gestiones b ON (a.prestamo_id=b.prestamo_id and b.resultado_id=6) INNER JOIN categorias d ON (a.categoria_id=d.categoria_id) INNER JOIN subcategorias e ON (a.categoria_id=e.categoria_id AND a.subcategoria_id=e.subcategoria_id)
Saludos