Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/05/2015, 04:53
Avatar de pruizsoriano
pruizsoriano
 
Fecha de Ingreso: agosto-2013
Mensajes: 11
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Rellenar campo según valores

Después de mucho cabilar sobre el tema he llegado a la siguiente consulta:

Código MySQL:
Ver original
  1.     tb_cuadrante2015 . IdFECHA ,
  2. DATE_FORMAT( tb_cuadrante2015 . EMPIEZA ,'%Y-%m-%d') AS  FECHA ,
  3.      tb_personal . IdPERSONAL ,
  4.      tb_personal . TURNO ,
  5.      tb_personal . NOMBRE ,
  6.      tb_personal . APELLIDOS ,
  7.      tb_vacaciones1 . EMPIEZA1 ,
  8.      tb_vacaciones1 . TERMINA1 ,
  9.      tb_vacaciones2 . EMPIEZA2 ,
  10.      tb_vacaciones2 . TERMINA2 ,
  11.      tb_personal . ESTADO1 ,
  12. CASE tb_personal. VACACIONES1   WHEN tb_cuadrante2015. EMPIEZA  >= tb_vacaciones1. EMPIEZA1  AND tb_cuadrante2015. EMPIEZA  <= tb_vacaciones1. TERMINA1  THEN 'VACACIONES'
  13.                 ELSE ''
  14.                 END,
  15. CASE tb_personal. VACACIONES2   WHEN tb_cuadrante2015. EMPIEZA  >= tb_vacaciones2. EMPIEZA2  AND tb_cuadrante2015. EMPIEZA  <= tb_vacaciones2. TERMINA2  THEN 'VACACIONES'
  16.                 ELSE ''
  17.                 END
  18.      bd_pruebas . tb_vacaciones1
  19.     INNER JOIN  bd_pruebas . tb_personal  
  20.         ON ( tb_vacaciones1 . IdVACACIONES1  =  tb_personal . VACACIONES1 )
  21.     INNER JOIN  bd_pruebas . tb_vacaciones2  
  22.         ON ( tb_vacaciones2 . IdVACACIONES2  =  tb_personal . VACACIONES2 )
  23.     INNER JOIN  bd_pruebas . tb_cuadrante2015  
  24.         ON ( tb_cuadrante2015 . TURNO  =  tb_personal . TURNO );

El problema es que funciona bien a medias o menos, me explico:

Efectivamente esta consulta me genera un campo en el que sí se cumplen las condiciones, es decir, aparece la palabra 'VACACIONES', pero el problema es que solo se cumple en el primer CASE y solo con los criterios del primer registro de la tabla 'tb_vacaciones1' o sea el primer turno de vacaciones de los 9 que hay que cada tabla 'tb_vacaciones1' y 'tb_vacaciones2'

Código SQL:
Ver original
  1. IdVACACIONES1  INT(2) UNSIGNED ZEROFILL NOT NULL,
  2.    EMPIEZA1  DATE DEFAULT NULL,
  3.    TERMINA1  DATE DEFAULT NULL,
  4.    DIA_A1  DATE DEFAULT NULL,
  5.   PRIMARY KEY ( IdVACACIONES1 )

Por mucho que le doy vueltas no encuentro el porqué tan solo trabaja con el primer registro de la tabla 'tb_vacaciones1' y obvie todos los demás. Con los datos que doy alguien podría encontrar el fallo?

Última edición por gnzsoloyo; 08/05/2015 a las 05:48