Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/11/2013, 15:59
beimar26
 
Fecha de Ingreso: octubre-2013
Mensajes: 34
Antigüedad: 10 años, 6 meses
Puntos: 0
Ejecutar consulta si cumple condicion

Muy buenas tardes apreciados Ingenieros
Tengo la siguiente inquietud
Tengo un SP Que recibe 03 parámetros y de acuerdo al valor de un parametro debe ejecutarse la consulta que corresponda algo como un switch case

Ejemplo

Código MySQL:
Ver original
  1. create  procedure  miconsulta(IN  fecha1 DATE, fecha2 DATE,grupo int)                  
  2.     begin                
  3.           if grupo=2 then
  4.          
  5.     SELECT
  6.     eventos.nombre_razonsoMARCACION_EMPLEADOcial,
  7.     eventos.id_ser,
  8.     eventos.Nombres,
  9.     IFNULL(eventos.fecha, "RESULTADO TOTAL SOCIO DE NEGOCIOS") AS 'FECHA',
  10.     eventos.Entrada,
  11.     eventos.Salida_Almuerzo,
  12.     eventos.Entrada_Almuerzo,
  13.     eventos.Total_Almuerzo,
  14.     eventos.Salida_Laboral,
  15.     eventos.Total_Labor
  16.       FROM (
  17.      
  18.     SELECT  e.id_ser,
  19.     emp.nombre_razonsocial,
  20.     CONCAT(p.Apellidos,'-',p.Nombres) AS 'Nombres',
  21.     e.fecha,
  22.     TIME(e.fecha_Entrada) AS 'Entrada',
  23.     TIME(e.fecha_Salida_Almuerzo) AS 'Salida_Almuerzo',
  24.     TIME (e.fecha_Entrada_Almuerzo) AS 'Entrada_Almuerzo',
  25.     SEC_TO_TIME(SUM((TIME_TO_SEC(e.fecha_Entrada_Almuerzo) - TIME_TO_SEC(e.fecha_Salida_Almuerzo)))) AS 'Total_Almuerzo',
  26.     TIME (e.fecha_salida) AS 'Salida_Laboral',
  27.     SEC_TO_TIME(SUM((TIME_TO_SEC(e.fecha_Salida) - TIME_TO_SEC(e.fecha_Entrada)))) AS 'Total_Labor'
  28.      
  29.     FROM (eventos e INNER JOIN personas p
  30.     ON e.id_ser=p.id_ser
  31.      INNER JOIN  personas_empresa pe
  32.       ON e.id_ser=pe.id_ser
  33.        INNER JOIN  empresas emp
  34.        ON pe.id_empresa=emp.id_empresa)
  35.      
  36.     WHERE fecha BETWEEN fecha1 AND fecha2
  37.     #WHERE e.fecha BETWEEN '2013-10-01' AND '2013-10-15'
  38.     and  emp.id_empresa=2
  39.     GROUP BY e.id_ser,e.fecha ASC WITH ROLLUP
  40.     LIMIT 2000
  41.     ) AS eventos;
  42.    
  43.     if grupo=3
  44.    
  45.     eventos.nombre_razonsocial,
  46.     eventos.id_ser,
  47.     eventos.Nombres,
  48.     IFNULL(eventos.fecha, "RESULTADO TOTAL SOCIO DE NEGOCIOS") AS 'FECHA',
  49.     eventos.Entrada,
  50.     eventos.Salida_Almuerzo,
  51.     eventos.Entrada_Almuerzo,
  52.     eventos.Total_Almuerzo,
  53.     eventos.Salida_Laboral,
  54.     eventos.Total_Labor
  55.       FROM (
  56.      
  57.     SELECT  e.id_ser,
  58.     emp.nombre_razonsocial,
  59.     CONCAT(p.Apellidos,'-',p.Nombres) AS 'Nombres',
  60.     e.fecha,
  61.     TIME(e.fecha_Entrada) AS 'Entrada',
  62.     TIME(e.fecha_Salida_Almuerzo) AS 'Salida_Almuerzo',
  63.     TIME (e.fecha_Entrada_Almuerzo) AS 'Entrada_Almuerzo',
  64.     SEC_TO_TIME(SUM((TIME_TO_SEC(e.fecha_Entrada_Almuerzo) - TIME_TO_SEC(e.fecha_Salida_Almuerzo)))) AS 'Total_Almuerzo',
  65.     TIME (e.fecha_salida) AS 'Salida_Laboral',
  66.     SEC_TO_TIME(SUM((TIME_TO_SEC(e.fecha_Salida) - TIME_TO_SEC(e.fecha_Entrada)))) AS 'Total_Labor'
  67.      
  68.     FROM (eventos e INNER JOIN personas p
  69.     ON e.id_ser=p.id_ser
  70.      INNER JOIN  personas_empresa pe
  71.       ON e.id_ser=pe.id_ser
  72.        INNER JOIN  empresas emp
  73.        ON pe.id_empresa=emp.id_empresa)
  74.      
  75.     WHERE fecha BETWEEN fecha1 AND fecha2
  76.        
  77.     and  emp.id_empresa=3
  78.     GROUP BY e.id_ser,e.fecha ASC WITH ROLLUP
  79.     LIMIT 2000
  80.     ) AS eventos;
  81.     END if;
  82.     END if;
  83.     END$$


La verdad no me funciona
alguien en este maravilloso foro me po

Última edición por gnzsoloyo; 07/11/2013 a las 19:20 Razón: SQL sin etiqutar. Usar Highlight "MySQL"