Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/05/2011, 21:34
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta sobre funciones en MySQL

Yo lo simplificaría así:
Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `Proc_usuarios_lista`$$
  4. CREATE PROCEDURE `Proc_usuarios_lista`(IN tipoSaldo INT(11))
  5.     id,
  6.     nombre,
  7.     cuit,
  8.     provincia,
  9.     (debe - haber) saldo
  10.   FROM
  11.     (SELECT
  12.           y.idusuario id,
  13.           y.Nombre,
  14.           y.cuit,
  15.           y.provincia,
  16.           SUM(IFNULL(c.haber, 0)) haber,
  17.           SUM(IFNULL(c.debe, 0)) debe
  18.         FROM
  19.           yms_usuarios y LEFT JOIN `yms_ccusuarios` c ON y.idusuario = c.idusuario
  20.         GROUP by y.idusuario
  21.         ORDER BY
  22.           y.idusuario ASC) T1;
  23.  
  24.   CASE tipoSaldo
  25.     WHEN 1 THEN
  26.         SELECT * FROM REPORTE;
  27.     WHEN 2 THEN
  28.         SELECT*
  29.         FROM REPORTE
  30.         HAVING saldo>0;
  31.     WHEN 3 THEN
  32.         SELECT*
  33.         FROM REPORTE
  34.         HAVING saldo<0;
  35.     WHEN 4 THEN
  36.         SELECT*
  37.         FROM REPORTE
  38.         HAVING saldo=0;
  39.     END CASE;
  40. END$$
  41.  
  42. DELIMITER;

Nota: Las tablas TEMPORARY existen sólo mientras dura la conexión, y son visibles sólo para el usuario que abrió la conexión, por lo que el mismo nombre puede ser invocado por diferentes conexiones (incluso usando el mismo usuario) sin que se generen conflictos. cuando la conexión se cierra, la tabla desaparece.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)