Código PHP:
CREATE DEFINER=`root`@`localhost` PROCEDURE `Proc_usuarios_lista`(tipoSaldo int(11))
BEGIN
CASE tipoSaldo
WHEN 1 THEN
SELECT
yms_usuarios.idusuario as id,
yms_usuarios.Nombre,
yms_usuarios.cuit,
yms_usuarios.provincia,
(if(SUM(yms_ccusuarios.haber)<>0,SUM(yms_ccusuarios.haber),0))-(if(SUM(yms_ccusuarios.debe)<>0,SUM(yms_ccusuarios.debe),0)) as saldo
FROM
yms_usuarios
LEFT JOIN `yms_ccusuarios` ON (`yms_usuarios`.idusuario = `yms_ccusuarios`.idusuario)
GROUP by yms_usuarios.idusuario
ORDER BY
yms_usuarios.idusuario asc;
WHEN 2 THEN
SELECT
yms_usuarios.idusuario as id,
yms_usuarios.Nombre,
yms_usuarios.cuit,
yms_usuarios.provincia,
(if(SUM(yms_ccusuarios.haber)<>0,SUM(yms_ccusuarios.haber),0))-(if(SUM(yms_ccusuarios.debe)<>0,SUM(yms_ccusuarios.debe),0)) as saldo
FROM
yms_usuarios
LEFT JOIN `yms_ccusuarios` ON (`yms_usuarios`.idusuario = `yms_ccusuarios`.idusuario)
GROUP by yms_usuarios.idusuario
having saldo>0
ORDER BY
yms_usuarios.idusuario asc;
WHEN 3 THEN
SELECT
yms_usuarios.idusuario as id,
yms_usuarios.Nombre,
yms_usuarios.cuit,
yms_usuarios.provincia,
(if(SUM(yms_ccusuarios.haber)<>0,SUM(yms_ccusuarios.haber),0))-(if(SUM(yms_ccusuarios.debe)<>0,SUM(yms_ccusuarios.debe),0)) as saldo
FROM
yms_usuarios
LEFT JOIN `yms_ccusuarios` ON (`yms_usuarios`.idusuario = `yms_ccusuarios`.idusuario)
GROUP by yms_usuarios.idusuario
having saldo<0
ORDER BY
yms_usuarios.idusuario asc;
WHEN 4 THEN
SELECT
yms_usuarios.idusuario as id,
yms_usuarios.Nombre,
yms_usuarios.cuit,
yms_usuarios.provincia,
(if(SUM(yms_ccusuarios.haber)<>0,SUM(yms_ccusuarios.haber),0))-(if(SUM(yms_ccusuarios.debe)<>0,SUM(yms_ccusuarios.debe),0)) as saldo
FROM
yms_usuarios
LEFT JOIN `yms_ccusuarios` ON (`yms_usuarios`.idusuario = `yms_ccusuarios`.idusuario)
GROUP by yms_usuarios.idusuario
having saldo=0
ORDER BY
yms_usuarios.idusuario asc;
END CASE;
END;
Mi duda esta (como se puede observar) que tengo el MISMO codigo repetido para cambiar solo la condicion que esta en having saldo=0
La pregunta es: Existe alguna forma de "optimizar esto" para de esa forma no tener que colocar el codigo tantas veces repetidas.?
Aguardo sus comentarios por favor.