Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/03/2011, 07:25
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Help con intervalos de un campo a otro

Una manera de hacerlo es la siguiente

Supongamos que tenemos una tabla o vista Ventas y una tabla Intervalos

Ventas
...
idcomercial <-- identifica al comercial
idProducto <-- identifica el producto
totalventas <-- Numerico con el total de ventas del comercial y producto
...

1...1...50
1...2...150
2...1...150
2...2...50

Intervalos
...
idProducto
minimo
maximo
comision
...

1...0......100...25
1...101..200...50
2...0......100...30
2...101..200...60

Esta consulta nos daria la comision a cobrar por cada producto y comercial.

Código MySQL:
Ver original
  1. SELECT Ventas.idcomercial,
  2.              Ventas.idProducto,
  3.              Ventas.totalventas,
  4.               (SELECT ti.comision
  5.                       from Intervalos ti  
  6.                              where ti.idProducto=Ventas.idProducto
  7.                                  and ti.minimo<=Ventas.totalventas
  8.                                  and ti.maximo>=Ventas.totalventas) AS com
  9. FROM TProductos;

1...1...50....25 el comercial 1 ha vendido 50 del producto 1 le corresponde 25
2...1...150..50 el comercial 2 ha vendido 150 del producto 1 le corresponde 50
1...2...150..60
2...2...50....30


Te dejo para ti solucionar el tema del cambio de tramos, es decir si los tramos tienen una vigencia temporal debes agregar campos a la tabla intervalos para saber en que fechas es vigente cada tramo y en la tabla ventas para saber a que fechas corresponde cada venta. Con esto te será faicil modificar la subconsulta para que ademas de retornar la comision correspondiente al tramo de ventas lo haga con la comision vigente en el periodo de ventas concreto. Si los cambios de vigencia y los peridos de venta no coinciden tendrás que decidir tu algo, no hay una solución concreta depende del acuerdo que tengas con los comerciales....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.