[SOLUCIONADO] Consulta sobre las Ponderaciones

Buenas tardes. Les cuento que ayer arrancamos exitosamente con el Tehuelche en Producción acá en la UNM. Por ahora, todo 10 puntos.

Lo que me tiene entretenido es el tema de las Reglas de Ponderaciones. Probé generar una Regla intentar hacerla funcionar pero no me hace el insert en la tabla sbc_reglas_x_ejecuciones_x_solicitud y estoy perdido respecto de qué estoy haciendo mal.
Podrán darme algún caso de ejemplo como para que me oriente o ayudarme un poco?

Les paso el SQL que generé, por ahí ayuda:

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_ponderacion,
(SELECT
(SUM(ingresos_mensuales) + (SELECT monto_mensual FROM sbc_datos_laborales WHERE solicitud = $solicitud))
/ (SELECT cnt_personas_grp_fam + 1 as cant_fam FROM sbc_cabecera_grp_fam WHERE solicitud = $solicitud)
FROM sbc_datos_personales_grp_fam WHERE solicitud = $solicitud),
(SELECT
CASE WHEN

            (SUM(ingresos_mensuales) + (SELECT monto_mensual FROM sbc_datos_laborales WHERE solicitud = $solicitud))
            / (SELECT cnt_personas_grp_fam + 1 as cant_fam FROM sbc_cabecera_grp_fam WHERE solicitud = $solicitud)
            >= 900.00 THEN 0

            WHEN

            (SUM(ingresos_mensuales) + (SELECT monto_mensual FROM sbc_datos_laborales WHERE solicitud = $solicitud))
            / (SELECT cnt_personas_grp_fam + 1 as cant_fam FROM sbc_cabecera_grp_fam WHERE solicitud = $solicitud)
            >= 800.00 AND 
            (SUM(ingresos_mensuales) + (SELECT monto_mensual FROM sbc_datos_laborales WHERE solicitud = $solicitud))
            / (SELECT cnt_personas_grp_fam + 1 as cant_fam FROM sbc_cabecera_grp_fam WHERE solicitud = $solicitud)
            <= 899.00 THEN 10 

            WHEN

            (SUM(ingresos_mensuales) + (SELECT monto_mensual FROM sbc_datos_laborales WHERE solicitud = $solicitud))
            / (SELECT cnt_personas_grp_fam + 1 as cant_fam FROM sbc_cabecera_grp_fam WHERE solicitud = $solicitud)
            >= 551.00 AND 
            (SUM(ingresos_mensuales) + (SELECT monto_mensual FROM sbc_datos_laborales WHERE solicitud = $solicitud))
            / (SELECT cnt_personas_grp_fam + 1 as cant_fam FROM sbc_cabecera_grp_fam WHERE solicitud = $solicitud)
            <= 799.00 THEN 20
            
            ELSE 30 END AS ingresos_ponderacion

            FROM sbc_datos_personales_grp_fam 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;

Gracias y espero respuestas!

Hola Christian,
el único error que veo es que la variable que estas usando en el tercer parámetro del insert es incorrecta, la correcta es: $nro_regla (en lugar de $nro_regla_ponderacion). Fijate que corrigiendo eso deberías poder ejecutarla sin errores.
Saludos,
Clara.

Gracias por la respuesta Clara. Segui tu consejo y ahora tengo otro problema.

En la solapa “Parámetros” si completo tanto Tipos de Beca como Tipos de Evaluaciones a Ponderar, no me ejecuta la Ponderación cuando pongo “Calcular”. En cambio si por ejemplo no pongo Tipos de Evaluaciones a Ponderar se ejecuta la ponderación pero con el siguiente cartel de error: “Un valor de inserción o actualización es nulo, pero la columna no puede contener valores nulos.”

Que puede estar pasando?

Gracias nuevamente.

Saludos,

Chris

Hola,
entre los parámetros de la ponderación se deben completar los tipos de beca (al menos tiene que incluirse un tipo) y la idea es que además se pueda indicar uno o más tipos de evaluación para esa ponderación.
Por el momento la consulta que selecciona las solicitudes a ponderar solo considera aquellas que estén confirmadas pero que todavía no tienen evaluación. Por este motivo por ahora solo se pueden ponderar solicitudes sin evaluación (ya que incluir tipos de evaluaciones hará que no se encuentren solicitudes que satisfagan los parámetros).
Saludos.

No conteste antes porque no estuve viniendo a la Universidad. Es lo que estoy haciendo pero me sigue tirando el cartel que dice: "“Un valor de inserción o actualización es nulo, pero la columna no puede contener valores nulos.”

Ideas de qué puede ser?

En el Query que armé, en algunos casos puntuales devolvía “null” como valor pero lo solucioné con un CASE WHEN.

Saludos y gracias.

Christian Vázquez
Universidad Nacional de Moreno

Exacto, creo que lo que te pasaba es que el SELECT que armaba el valor para el campo “valor_resultante_regla” a veces no retornaba nigún valor. Me alegra que lo hayas podido resolver.
Saludos,
Clara