Es que lo que estás haciendo es mezclar caballos con manzanas. Esas tablas no están relacionadas, porque una es una tabla de pedidos de envío y la otra es una tabla paramétrica, de donde surgen los costos de envío. Pero no hay una relación entre la PK de ambas y por tanto no sirven para hacer un JOIN.
De todos modos se puede, pero forzosamente tienes que generar un producto cartesiano para obtener lo que quieres, y además a esa tabla de "envios" le está faltando el límite inferior o superior del rango para ser útil.
Es decir, cuando planteas una tabla de parámetros semejantes, donde estableces un límite de peso para un precio dado, debes incluir ambos límites: Desde qué peso y hasta qué peso. De lo contrario la consulta se complica.
La idea es que se pueda hacer algo como:
El problema de esta consulta es que MYSQL intentará hacer un matching entre los "ID" de las tablas porque tienen el mismo nombre, por lo que el resultado final puede ser completamente erróneo.
En realidad, la solución correcta es a través de otro tipo de diseño de datos. Es decir, el modelo que aplicas no es útil para lo que quieres, porque no está correctamente diseñado.