SELECT *, tablaC.`nivel`
FROM
tablaA
INNER JOIN (
tablaB
LEFT JOIN tablaC ON
tablaB.`puntosnivel`BETWEEN
tablaC.`niv_inic`AND
tablaC.`niv_fina`)
ON tablaA.`clienteid` = tablaB.`cli_id`;
tablaC contiene estos registros

así tal como los ves relación definitiva entre tablas b y c no hay lo único que hice fue tomar el contenido del campo puntosnivel de la tablaB y hacer el between en C
lo rojo es la relación A y B
y lo azul es el dato obtenido de B para el between en C
como esplique arriba me sale en el primer registro de la tabla C
osea: cuando los puntos nivel están entre 1 y 50 incluyéndolos me arroja el valor, del campo (nivel) de la tabla C, pero cuando modifico el valor a mayor este entonces ya no me arroja nada, es como si solo hiciera una sola búsqueda y en el primer registro de C y lo demás lo obviara.