Aquí el código del SP .... gracias
Código HTML:
CREATE DEFINER=`root`@`localhost` PROCEDURE `tabla_posiciones`(in par_cliente int, in par_sucursal int, in par_torneo int, in par_jornada int)
begin
DECLARE vn_equipo INT;
DECLARE vn_jornada INT;
DECLARE vn_numjueg INT;
DECLARE vn_equipo_vs INT;
DECLARE vn_jj INT DEFAULT 0;
DECLARE vn_marcador1 INT;
DECLARE vn_marcador2 INT;
DECLARE vn_jg INT DEFAULT 0;
DECLARE vn_je INT DEFAULT 0;
DECLARE vn_jp INT DEFAULT 0;
DECLARE vn_gf INT DEFAULT 0;
DECLARE vn_ge INT DEFAULT 0;
DECLARE vn_puntos INT DEFAULT 0;
DECLARE done INT DEFAULT 0;
/* Cursor de Tabla Temporal */
DECLARE barre_temporal CURSOR FOR
SELECT id_equipo
FROM tabla_pos;
/* Cursor para barrer los partidos */
DECLARE barre_partidos CURSOR FOR
SELECT a.id_jornada, a.id_juego
FROM encuentro as a, calendario as b
WHERE a.id_cliente = par_cliente AND a.id_sucursal = par_sucursal AND
a.id_torneo = par_torneo AND a.id_jornada <= par_jornada AND a.id_equipo = vn_equipo AND
b.id_cliente = a.id_cliente AND b.id_sucursal = a.id_sucursal AND
b.id_torneo = a.id_torneo AND b.id_jornada = a.id_jornada AND b.id_juego = a.id_juego AND
b.cal_estatus = 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
DROP TEMPORARY TABLE IF EXISTS tabla_pos;
-- Crea tabla Temporal, con los equipos correspondientes según paramétros
-- Las columnas siguientes de "puntos", son las necesarias para el tratamiento de la promoción de JUMEX
CREATE TEMPORARY TABLE tabla_pos AS
SELECT id_equipo,0 as jj,0 as jg,0 as je,0 as jp,0 as gf,0 as ge,0 as puntos, 0 goles, 0 diferencia, 0 num_juego, 0 adeudo
FROM equipo
WHERE id_cliente = par_cliente AND id_sucursal = par_sucursal AND id_torneo = par_torneo AND equ_estatus = 'A';
SET SQL_SAFE_UPDATES=0;
OPEN barre_temporal;
read_loop: LOOP
/* barre equipos de la temporal */
FETCH barre_temporal INTO vn_equipo;
If done THEN
LEAVE read_loop;
END IF;
OPEN barre_partidos;
read_partidos: LOOP
/* Barre los partidos del equipo en curso */
FETCH barre_partidos INTO vn_jornada, vn_numjueg;
If done THEN
LEAVE read_partidos;
End If;
/* Incrementa el contador de número de juegos */
SET vn_jj = vn_jj + 1;
/* Determina el equipo contrario */
SET vn_equipo_vs = (SELECT id_equipo
FROM encuentro
WHERE id_equipo <> vn_equipo and id_cliente = par_cliente and id_sucursal = par_sucursal and id_torneo = par_torneo and id_jornada = vn_jornada and id_juego = vn_numjueg) ;
/* Determina Marcadores de ambos equipos */
SET vn_marcador1 = (SELECT IfNull(SUM(detalle_encuentro.denc_gol),0)
FROM detalle_encuentro
WHERE id_cliente = par_cliente AND
id_sucursal= par_sucursal AND
id_torneo = par_torneo AND
id_jornada = vn_jornada AND
id_juego = vn_numjueg AND
id_equipo = vn_equipo);
SET vn_marcador2 = (SELECT IfNull(SUM(detalle_encuentro.denc_gol),0)
FROM detalle_encuentro
WHERE id_cliente = par_cliente AND
id_sucursal= par_sucursal AND
id_torneo = par_torneo AND
id_jornada = vn_jornada AND
id_juego = vn_numjueg AND
id_equipo = vn_equipo_vs);
IF vn_marcador1 = vn_marcador2 Then
SET vn_je = vn_je + 1;
SET vn_puntos = vn_puntos + 1;
END IF;
If vn_marcador1 > vn_marcador2 Then
SET vn_jg = vn_jg + 1;
SET vn_puntos = vn_puntos + 3;
END IF;
If vn_marcador2 > vn_marcador1 Then
SET vn_jp = vn_jp + 1;
END IF;
SET vn_gf = vn_gf + vn_marcador1;
SET vn_ge = vn_ge + vn_marcador2;
/* Sólo si la jornada es igual a la del párametro de entrada, se graban los marcadores*/
If vn_jornada = par_jornada Then
UPDATE tabla_pos
SET goles = vn_marcador1, num_juego = vn_numjueg
WHERE id_equipo = vn_equipo;
UPDATE tabla_pos
SET goles = vn_marcador2, num_juego = vn_numjueg
WHERE id_equipo = vn_equipo_vs;
END IF;
END LOOP;
CLOSE barre_partidos;
UPDATE tabla_pos
SET jj = vn_jj, jg = vn_jg, je = vn_je, jp = vn_jp, gf = vn_gf, ge = vn_ge, puntos = vn_puntos
WHERE id_equipo = vn_equipo;
SET vn_jj = 0;
SET vn_je = 0;
SET vn_puntos = 0;
SET vn_jp = 0;
SET vn_jg = 0;
SET vn_gf = 0;
SET vn_ge = 0;
SET done = 0;
END LOOP;
CLOSE barre_temporal;
SET vn_jornada = premio_jumex(par_cliente,par_sucursal,par_torneo);
SELECT equipo.equ_nombre, tabla_pos.jj, tabla_pos.jg, tabla_pos.je,
tabla_pos.jp, tabla_pos.gf, tabla_pos.ge, (tabla_pos.gf - tabla_pos.ge) as 'dif', tabla_pos.puntos
FROM tabla_pos, equipo
WHERE equipo.id_cliente = par_cliente AND equipo.id_sucursal = par_sucursal AND
equipo.id_torneo = par_torneo AND equipo.id_equipo = tabla_pos.id_equipo
ORDER BY 9 DESC,8 DESC;
END