Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/08/2011, 12:50
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Se puede mejorar esta consulta.

Hola de nuevo arielenter:

No me quedó claro si ya resolviste la consulta o sigues con problemas.

La consulta que te propone el compañero gnzsoloyo es de hecho prácticamente la misma que te propuse yo:

Mi propuesta:
Código:
SELECT DISTINCT 
SUM(IF(fentrada BETWEEN '2001-01-01' AND '2011-08-04' 
AND estado='PAGADO' OR estado='OCUPADO', total, 0))
+
SUM(IF(fentrada BETWEEN '2011-01-08' AND '2011-05-08' 
AND estado='OCUPADO', entrega, 0))
+
SUM(IF(fentrada BETWEEN '2011-01-08' AND '2011-05-08'
AND estado='DEBE', entrega, 0)) xTotal
FROM
alquiler
La propuesta de gnzsoloyo:
Código:
SELECT 
(SUM(IF(estado='PAGADO' OR estado='OCUPADO', total, 0)) + 
SUM(IF(estado='OCUPADO', entrega, 0)) + 
SUM(IF(estado='DEBE', entrega, 0))) xTotal
FROM alquiler 
WHERE 
fentrada BETWEEN '2001-01-01' AND '2011-08-04';
En mi caso no puse la condición de la fecha en el where externo porque en tu consulta de ejemplo estabas manejando dos rangos de fechas, no uno solo:

Código:
fentrada BETWEEN '2001-01-01' AND '2011-08-04' (para el primer sum)

y 

fentrada BETWEEN '2011-01-08' AND '2011-05-08' (para los dos sum restantes)
Tal y como lo pone gnzsoloyo el rango de fechas se aplicaría igual para los tres casos, no estoy seguro si esto es correcto. De cualquier manera si resolviste consulta me alegro mucho.

Saludos
Leo.