Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/04/2015, 08:02
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: 16 años, 5 meses
Puntos: 2658
Respuesta: Simple LEFT JOIN no Funciona

Pasemos un poco en limpio el script de la consulta:
Código MySQL:
Ver original
  1.     SUM (sol.monto) AS monto,
  2.     COUNT (s.dep) AS cuenta,
  3.     COUNT (DISTINCT sol.paciente) AS pacientes
  4.   FROM solc_servicios sol
  5.        INNER JOIN sadmint_servicios s ON sol.articulo = s.cod_serv
  6.        LEFT JOIN sadmint_clientes c ON sol.cliente = c.cod_resp
  7.  WHERE YEAR (sol.fecha) = 2015
  8.    AND MONTH (sol.fecha) = 02
  9.    AND s.dep = 'BANCO DE SANGRE'
  10.    AND C.TIPO NOT IN ('SEGUROS', 'EMPRESAS', 'PDVSA', 'FUNDACION')

Cambie el orden de la segunda tabla para que no se generen confusiones, en esa posicion queda un poco mas claro que la condicion con "sadmint_servicios" es mandatoria, mientras que con "sadmint_clientes" es opcional.
Ahora bien, el primer problema que yo le veo es que tienes esta condición:
Código MySQL:
Ver original
  1. AND C.TIPO NOT IN ('SEGUROS', 'EMPRESAS', 'PDVSA', 'FUNDACION')
Así escrita, esa condición es mandatoria, es decir, tiene que existir algun valor de esa lista en la tercera tabla (la de clientes), sin lo cual no devolverá datos. Pero como puede no existir ninguno, no devolverá nada.
¿Se entiende.
Por lo pronto yo cambiaría la sitaxis a esto:

Código MySQL:
Ver original
  1.     SUM (sol.monto) monto,
  2.     COUNT (s.dep) cuenta,
  3.     COUNT (DISTINCT sol.paciente) pacientes
  4.   FROM solc_servicios sol
  5.        INNER JOIN sadmint_servicios s ON sol.articulo = s.cod_serv
  6.        LEFT JOIN sadmint_clientes c ON sol.cliente = c.cod_resp
  7.  WHERE YEAR (sol.fecha) = 2015
  8.    AND MONTH (sol.fecha) = 2
  9.    AND s.dep = 'BANCO DE SANGRE'
  10.    AND (C.TIPO NOT IN ('SEGUROS', 'EMPRESAS', 'PDVSA', 'FUNDACION') OR C.TIPO  IS NULL)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)