Creo un trigger con evento AFTER INSERT que toma todas las clificaciones asignadas a un mismo estudiante realiza un procedimiento de PROMEDIO (MEDIA) y lo enviea a otra tabla para guardar alli la nota final.
Tengo 2 Tablas:
1. Historial_calificaciones
| idHistorial | ** |idalumno| ** |califnum | ** |fecha_ingreso
2. final
| idfinal | ** |idalumno| ** |califnum| --califnum es igual a decir promedio
PERO dichas acciones dependiente de:
1. Si NO existe el id del estudiante (idalumno) entonces inserta los datos en historial_caficaciones y luego envia el promedio a final en el campo califnum simpre y cuando NO EXISTA UN REGISTRO CREADO.
2. SI EXISTE ya un estudiante (idalumno) en la tabla Historial_calificaciones simplemente realiza una actualizacion al PROMEDIO del alumno ya creado el final
es decir si existe, actualiza el promedio.
Para el promedio uso AVG(califnum) y lo selecciono por el idalumno, asi sacara el promedio de un estudiante
Para ello estoy usando un trigger que es este:
Código PHP:
DROP TRIGGER IF EXISTS `promedio`//
CREATE TRIGGER `promedio` AFTER INSERT ON `tabla2`
FOR EACH ROW BEGIN
DECLARE total_final INT(11);
-- Cargo la Variable con la Cantidad de Registros
SET total_final = (SELECT COUNT(*) FROM final WHERE idalumno= NEW.idalumno GROUP BY idalumno);
-- Luego Tu codigo del If
IF total_final = 0 THEN
INSERT INTO final (idalumno, califnum) SELECT idalumno, AVG(califnum)
as califnum FROM tabla2 WHERE final.idalumno=NEW.idalumno GROUP BY idalumno;
END IF;
IF total_final > 0 THEN
UPDATE final SET
final.idalumno= NEW.idalumno,
final.califnum= AVG(califnum)
WHERE final.idalumno=NEW.idalumno;
END IF;
END
//
-Marcos Aguilera