Hola,
Estoy haciendo un procedimiento que suma puntajes, pero el problema que tengo es que al ejecutarlo, MYSQL query me dice que las subquerys devuelven más de un valor, y yo lo único que quiero es trabajar con memoria interna de MYSQL. Estuve viendo varios ejemplos y todo pero no encuentro el error.
Código MySQL:
Ver originalDELIMITER $$
/*obtengo puntaje acutal*/
/*calculo el vuelto*/
set @resto
= @pts_actual
- @a_pagar
; /*le hago pagar*/
/*subo en la cadena*/
/*el padre se transforma en perdedor*/
set @id_perdedor
= @id_padre
; /*el 15 del original*/
set @pts_perdidos
= (@pts_perdidos
* @por_nota
);
/*Calculo los puntos por nivel que perdio el tipo, los pts que pierde el perdedor dependen de los puntos del nivel
del ganador */
set @pts_perdidos
= (select niveles.nivel
from jugadores
, niveles
, relaciones
where jugadores.id_nivel
= relaciones.id_hijo
and jugadores.idjugadores
=1);
/*Veo si tiene padre*/
set @id_padre
= (select id_padre
from jugadores
, relaciones
where jugadores.idjugadores
= relaciones.id_hijo
and jugadores.idjugadores
=1);
/*Si tiene padre */
/*Obtengo porcentaje de puntos perdidos para su padre, de acuerdo al nivel del perdedor*/
set @per_derrota
= (select porcentaje_socios
from niveles
, jugadores
where jugadores.id_nivel
= niveles.id_niveles
and jugadores.idjugadores
= 1); /* 100 = 100 - ( 100 * 0.15 = 15);*/
set @a_pagar
= @pts_perdidos
- (@pts_perdidos
* @per_derrota
);
until @id_perdedor
= NULL
DELIMITER ;
Alguien sabe como es el tema de recibir valores que devuelven los select a variables internas?, porque tengo entendido que con set @var = query se puede.
Gracias.