Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/06/2008, 07:53
Avatar de arielcasanova
arielcasanova
 
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 7 meses
Puntos: 1
DESAFIO: Consulta imposible

Gente: solicito ayuda.
Tenemos las siguientes tablas (sólo pondrè los campos que nos interesan)

consultores:
id, nombre

visitas
id_consultor, fecha, horas

tarifas

id_consultor, valor, fecha1, fecha2


ahora bien. Cuando se hace una consulta para ver las horas de determinado consultor en todos los proyectos entre dos fechas, se ejecuta la consulta:

SELECT DATE_FORMAT(visitas.fecha, '%d-%m-%Y') AS fechaf, visitas.*,
proyectos.titulo, proyectos.cliente, consultores.nombre, clientes.nombre as nomcli
FROM visitas
inner join clientes on proyectos.cliente=clientes.id
inner join proyectos on proyectos.id=visitas.proyecto
inner join consultores on consultores.id=visitas.id_consultor
WHERE visitas.id_consultor='$consultor'
AND visitas.fecha between '$fecha1a' and '$fecha2a' group by visitas.id

Bien. Si el consultor sòlo tiene una tarifa cargada en su historial, los valores de tarifas serán:
id_consultor=1, valor=$50, fecha1=2008-01-01, fecha2=0000-00-00

el càlculo serìa el total de cantidad de horas de las visitas obtenidas como resultado en la consulta anterior, multiplicado por valor ($50).

Se podrìa hacer como:
SELECT sum(horas) as totalhoras FROM visitas where visitas.fecha between '$fecha1a' and '$fecha2a' and id_consultor='$consultor' order by $orden"

y ese resultado se multiplica por valor ($50) y listo.

Ahora, si en el historial de tarifas hubo varias, lo que tenemos es un registro así:
id_consultor=1, valor=$50, fecha1=2008-01-01, fecha2=2008-02-01
id_consultor=1, valor=$60, fecha1=2008-02-02, fecha2=2008-03-01
id_consultor=1, valor=$70, fecha1=2008-03-02, fecha2=0000-00-00

entonces, la consulta tendrìa que poder discriminar el período 1 (entre 2008-01-01 y 2008-02-01), cotejarlo con las fechas dadas para el càlculo ($fecha1a y $fecha2a), calcular la cantidad de horas en visitas de esa fecha, y multiplicarlo por el valor asignado en esa època.
luego lo mismo con el siguiente período, y asì sucesivamente....

Alguna idea de cómo hacerlo?????
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar