Ver Mensaje Individual
  #8 (permalink)  
Antiguo 15/09/2012, 06:29
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Aplicación en Localhost y Servidor

Con el LEFT JOIN no te saldrá lo que buscas, me he dado cuenta ahora puesto que si la fecha es nula tambien lo serà el consultor....

Habria que repensarlo todo, apesar del error fijate en el uso de las funciones de fecha para que veas lo inutiles que son los campos numéricos adicionales que estas usando. Aparte de inutiles son peligrosos y expresamente prohibidos en un buen diseño de bbdd relacional. Es la misma información guardada dos veces lo que ademas de ocupar especio inutilmente pone en peligro la consistencia de la información, si por un error X fecha y los campos dia, mes y ano no son coherentes que info será la buena....?

Para solucionar esto deberias obtener el nombre del consultor previamente, igual que obtinenes su identificador y agregarlo como una constante usando la variable que lo guarda.


Código MySQL:
Ver original
  1. SELECT cd.dia AS dia,
  2.              cd.mes AS mes,
  3.              $ano AS ano,
  4.              $consultor AS consultor
  5. FROM calendario_dias cd
  6.        LEFT JOIN (SELECT DISTINCT t.fecha
  7.                                   FROM trabajos t
  8.                                     INNER JOIN consultores c
  9.                                       ON t.consultores_Ident_consultor =c.Ident_consultor
  10.               WHERE MONTH(t.fecha) = $mes
  11.                    AND YEAR(t.fecha) = $ano
  12.                    AND c.Ident_consultor = $consultor_no_report
  13.                    AND c.esconsultor = 1
  14.                    AND c.reporte_habitual = 1
  15.                    AND (c.f_fin='' OR c.f_fin = '0000-00-00')) as sbc
  16.         ON  cd.dia=DAYOFMONTH(sbc.fecha) AND cd.mes=MONTH(sbc.fecha)    
  17. WHERE cd.mes = $mes
  18.    AND sbc.fecha IS NULL;

En cuanto a si el error se produce por la cantidad de consultas...sin conocer tu negocio es dificil aventurar alternativas pero la solucion iria en la linea de pensar una consulta que retorne la info de todos los consultores a la vez y luego tratar la info sobre el array obtenido....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.