Cita: Si en stock tengo 4 veces el nombre juan pero solo tengo 2 registros en la tabla caja cuando hago la consulta me salen los 4 registros pero con datos intercalados de la tabla caja se me hiso un entrevero el filtro
Ese tipo de comportamientos es habitual con JOINs mal armados o condiciones ON incompletas y/omal colocadas, y también cuando no se comprende correctamente los resultados que el JOIN devuelve.
Para darte un buen diagnóstico deberíamos ver el CREATE TABLE de cada tabla involucrada, y una muestra de los datos contenidos en cada tabla, que se relacionen entre si.
Y de todos modos, este tema no es de PHP, sino de Base de Datos, por lo que recomendaría que pidas que lo muevan a esos foros.
Acá es off-topic (PHP no es MySQL y viceversa).