Ver Mensaje Individual
  #27 (permalink)  
Antiguo 22/08/2008, 01:51
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años, 3 meses
Puntos: 300
Respuesta: DESAFIO: Consulta imposible

Podría estar ocurriendo lo que dices, si no has aplicado correctamente el tipo y tamaño float a horas. Dinos cómo has puesto el tamaño de ese float para horas, porque por ej. un tamaño 4,2 ó un 3,1 te causan el problema al convertir a 99,9 y 9,9 un número superior a 99,9 y a 9,9, respectivamente. Mira este hilo y lee el claro post de Genetix, donde se explica todo esto bien: http://www.forosdelweb.com/f86/probl...-mysql-208813/

Esta consulta (perdona en el post anterior eliminé erróneamente el and between fecha1 and fecha2 que debe estar incluido) me ha funcionado perfectamente con un total de horas de 602,5 entre dos visitas que tienen distinta tarifa de un mismo visitador y de distintos proyectos (una de 300 horas a 70 la hora, y otra de 302,5 horas a 50 la hora. Me ha salido un total de 36125. He quitado, además, la selección del proyecto, porque cuando suma varios te muestra el primero y puede ser equívoco.

SELECT T1.id, T1.nombre, SUM( T1.horas * t.valor ) TOTAL
FROM (

SELECT c.id AS id, c.nombre AS nombre, v.fecha AS fecha, v.horas AS horas, v.proyecto AS proyecto
FROM consultores c
INNER JOIN visitas v ON v.id_consultor = c.id
)T1
INNER JOIN tarifas t ON t.id_consultor = T1.id
WHERE T1.fecha
BETWEEN '2008-01-01'
AND '2008-12-31'
AND T1.fecha
BETWEEN t.fecha1
AND t.fecha2
GROUP BY t.id_consultor
HAVING T1.id =2

Creo que va a ser lo que dices. Comprueba el tamaño que has puesto a ese float para las horas.

Última edición por jurena; 22/08/2008 a las 04:21