Ver Mensaje Individual
  #8 (permalink)  
Antiguo 24/01/2011, 07: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, 4 meses
Puntos: 2658
Respuesta: Datediff - calcular días

En realidad, se puede, lo que sucede es que como se tata de datos excluyentes (lo que me dice que estás tratando de sacar un reporte entero en una sola consulta), la consulta se vuelve algo más compleja.
Podrías probar simplemente:
Código MySQL:
Ver original
  1.          P.nombre paciente,
  2.          C.codcuenta,
  3.          C.debe,
  4.          IFNULL(CH.fecha, '') fecha,
  5.          IFNULL(DATEDIFF(CURDATE(), CH.fecha), 0) dias
  6.         pacientes P
  7.         INNER JOIN cuenta C ON P.codpaciente = C.codpaciente
  8.         LEFT JOIN
  9.                 (SELECT codcuenta, MAX(fecha) fecha, estado, movimiento
  10.                 FROM cuentahistoria
  11.                 WHERE movimiento = 'E' AND estado = 'ALTA'
  12.                 GROUP BY codcuenta) CH ON C.codcuenta = CH.codcuenta
  13.        (DATEDIFF(CURDATE(), CH.fecha) > 11 AND c.debe > 0) OR CH.codcuenta IS NULL
  14. GROUP BY C.codcuenta
Esto es un mix entre ambas cosas. La idea es que devuelva los registros relacionados ente PACIENTE y CUENTA, y también con MOVIMIENTO, aunque sea NULL en este caso, pero si es NULL, los últimos dos campos del SELECT se convierten en vacío ('') y cero (=, ya que no existen datos que cumplan la condición.
Esta consulta se ordenará de tal forma que aquellos paciente que no tienen correspondencias en MOVIMIENTO aparezcan al final.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)