Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/06/2008, 09:12
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años
Puntos: 300
Respuesta: DESAFIO: Consulta imposible

A ver si es esto lo que buscas:

SELECT c.nombre, SUM(t.valor* v.horas) FROM consultores c INNER JOIN tarifas t ON c.id= t.id_consultor INNER JOIN visitas v ON v.id_consultor = t.id_consultor AND v.fecha BETWEEN fecha1 AND fecha2 GROUP BY t.id_consultor ORDER BY c.nombre

Te agrupa por nombre y suma el resultado de multiplicar el valor por el número de horas. La clave está en el INNER JOIN, en la unión entre tablas que se hace en el caso de tarifas y visitas condicionada no por una, sino por dos equivalencias: 1) entre id_consultor de ambas tablas y 2) que el campo fecha de visitas esté entre fecha1 y fecha2 de la tabla tarifas; luego sumas todo agrupando por id_consultor y ordenas por el nombre del consultor...: esta es la idea.

¡Ojo! las fecha1 y fecha2 no deben solaparse para tarifas del mismo id_consultor; si las solapas, tendrás un problema (duplicarás cifras). Además, las fechas de visita deben poder incluirse dentro de un rango de fechas de tarifa para ese consultor, con el fin de asignarle un solo valor, y siempre uno. Vigila eso, porque he visto que además pones una fecha final 0000-00-00. Seguramente sea un error, pero si quieres poner final de año, tendrás que escribir 2008-12-31

Suerte.

Última edición por jurena; 13/06/2008 a las 09:51 Razón: añadir aclaraciones