Autor Tema: Problema con las ponderaciones II  (Leído 1491 veces)

0 Usuarios y 1 Visitante están viendo este tema.

MarciaTejeda

  • Newbie
  • *
  • Mensajes: 12
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Quilmes
  • Nombre y apellido: Marcia Tejeda
  • Sistema: Mapuche-Diaguita
  • Teléfono laboral: 43657100
Problema con las ponderaciones II
« on: Febrero 17, 2012, 09:42:39 am »
Hola! Estamos teniendo algunos problemas con las ponderaciones de Tehuelche.

Les muestro dos reglas que tenemos armadas y funcionando correctamente.

Regla de salud:
INSERT INTO sbc_reglas_x_ejecuciones_x_solicitud
          (solicitud,
          ponderacion_ejecutada,
          nro_regla_ponderacion,
          valor_resultante_regla,
          valor_ponderacion_regla)
VALUES
          ($solicitud,
          $ponderacion_ejecutada,
         $nro_regla,
   (SELECT CASE WHEN (problemas_salud = 'N' AND cobertura_salud = 'S') THEN 1
      WHEN (problemas_salud = 'S' AND cobertura_salud = 'S') THEN 2
      WHEN (problemas_salud = 'N' AND cobertura_salud = 'N') THEN 3
      WHEN (problemas_salud = 'S' AND cobertura_salud = 'N') THEN 4
   END
   FROM tehuelche.sbc_datos_salud 
   WHERE solicitud = $solicitud

),
   (SELECT  CASE WHEN (problemas_salud = 'N' AND cobertura_salud = 'S') THEN 0
      WHEN (problemas_salud = 'S' AND cobertura_salud = 'S') THEN 2.5
      WHEN (problemas_salud = 'N' AND cobertura_salud = 'N') THEN 3.75
      WHEN (problemas_salud = 'S' AND cobertura_salud = 'N') THEN 6.25
   END
   FROM tehuelche.sbc_datos_salud 
   WHERE solicitud = $solicitud)
)
;


Regla de distancia:
INSERT INTO sbc_reglas_x_ejecuciones_x_solicitud
          (solicitud,
          ponderacion_ejecutada,
          nro_regla_ponderacion,
          valor_resultante_regla,
          valor_ponderacion_regla)
VALUES
          ($solicitud,
          $ponderacion_ejecutada,
         $nro_regla,
   (SELECT coalesce (distancia_sede,0) --se agrega el coalesce para los que tienen NULL el campo
FROM tehuelche.sbc_datos_personales_actuales
WHERE solicitud = $solicitud),
   (SELECT CASE WHEN distancia_sede = 6 THEN 0
      WHEN distancia_sede = 7 THEN 1.25
   WHEN distancia_sede = 8 THEN 2.5
   WHEN distancia_sede = 9 THEN 3.75
   WHEN distancia_sede = 10 THEN 5
   WHEN distancia_sede IS NULL THEN 0
   ELSE 6.25
   END
FROM tehuelche.sbc_datos_personales_actuales
WHERE solicitud = $solicitud))
;


UPDATE sbc_ejecuciones_x_solicitud
SET valor_segundo_ordenamiento =
(SELECT valor_resultante_regla FROM sbc_reglas_x_ejecuciones_x_solicitud
WHERE solicitud = $solicitud
AND ponderacion_ejecutada = $ponderacion_ejecutada
AND nro_regla_ponderacion = $nro_regla),
valor_ponderacion =
(SELECT valor_PONDERACION_regla FROM sbc_reglas_x_ejecuciones_x_solicitud
WHERE solicitud = $solicitud
AND ponderacion_ejecutada = $ponderacion_ejecutada
AND nro_regla_ponderacion = $nro_regla)
WHERE solicitud = $solicitud AND ponderacion_ejecutada = $ponderacion_ejecutada;


Creamos una ponderación que ejecuta primero la regla de salud y después la regla de distancia (la cual tiene el update porque es la última de la ponderación). El problema es que en la tabla sbc_reglas_x_ejecuciones_x_solicitud me aparecen los dos resultados de las reglas, ahora, en la tabla sbc_ejecuciones_x_solicitud (que según tengo entendido es de donde salen los datos para mostrarlos en el listado del sistema) sólo me aparece el resultado de la segunda regla ejecutada..

La pregunta es: cómo tendrían que aparecer los datos en pantalla? Se tendría que mostrar una suma de los resultados de todas las reglas ejecutadas en una ponderación?

Espero haberme explicado correctamente!

Gracias de antemano!

Myriam Céspedes

  • Moderador Global
  • *****
  • Mensajes: 392
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Myriam Céspedes
  • Sistema: Equipo SUDOCU | Proyecto EEI
Re:Problema con las ponderaciones II
« Respuesta #1 on: Marzo 07, 2012, 09:33:27 am »
Buen día!

Si bien ya dimos la solución al problema planteado, dejo el registro de la misma para que pueda ser consultada en el futuro por los usuarios de la comunidad.


De acuerdo al detalle de lo que les está pasando con las reglas y ponderaciones que armaron, entiendo que les está faltando sumarizar los puntajes obtenidos en las reglas que definieron.

Las reglas que establecen contienen sentencias sql que se ejecutan en un orden definido, y en cada uno de ellas se obtiene un puntaje. Es decir con las reglas de Salud y de Distancia que definieron estarían cumpliendo este requisito.

Ahora hay que tener en cuenta que dentro de este conjunto de reglas, una debe realizar la suma de todos los puntajes y es esa la que dará el resultado o valor de la ponderación para la solicitud.

Deberían entonces realizar este cálculo. La sentencia update que están utilizando es correcta, pero la deben agregar junto con la sentencia que hace el cálculo final.