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 Ventas.idProducto,
Ventas.totalventas,
where ti.idProducto
=Ventas.idProducto
and ti.minimo
<=Ventas.totalventas
and ti.maximo
>=Ventas.totalventas
) AS com
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....