Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/01/2011, 14:24
periota
 
Fecha de Ingreso: enero-2011
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Count de varios campos y que me muestre los que sumen 0

Muchas gracias por tu ayuda, he avanzado bastante.


He llegado a este codigo SQL:


SELECT idUser, nombre, Tel
SUM(CASE WHEN (SubConsulta.idUser1 = Usuarios.idUser ) THEN 1 ELSE 0 END )+
SUM(CASE WHEN (SubConsulta.idUser2 = Usuarios.idUser ) THEN 1 ELSE 0 END)+
SUM(CASE WHEN (SubConsulta.idUser3 = Usuarios.idUser ) THEN 1 ELSE 0 END ) AS TotalReservas
FROM Usuarios
LEFT JOIN (SELECT idUser1 ,idUser2,idUser3 FROM Reservas WHERE STR_TO_DATE( Reservas.Fecha, '%d/%m/%Y' ) > ( DATE_SUB( CURDATE( ) , INTERVAL 60
DAY ) ) AND TipoReserva = 'alquiler') AS SubConsulta ON (
Usuarios.idUser= SubConsulta.idUser1 OR
Usuarios.idUser = SubConsulta.idUser2 OR
Usuarios.idUser = SubConsulta.idUser3 )
GROUP BY Usuarios.idUser ORDER BY TotalReservas

El tema es que me lo hace perfecto, el problema es que tarda un monton ya que tengo la Tabla Reservas que tiene unos 200.000 registros y aumenta exponencialmente ya que lo que quiero sacar solo son los de un tramo de 2 meses y por el tema de los OR que tiene que hacer por cada uno de estos 200.000 registros y tengo la tabla usuarios con unos 3.000 usuarios y ya se sabe esto aumenta.

¿Alguna opcion para acelerar el calculo?
Gracias por vuestra ayuda.