Cita: me devuelve 6 registros, debido al producto cartesiano entre las tablas
Eso no es un producto cartesiano, sino la consecuencia de una relación N:N entre las tres tablas.
No confundas.
Producto cartesiano sería si cada registro de una tabla hace un JOIn con cada uno de la otra, en cadena, incluyendo aquellos registros donde no existe una relacion declarada de FK.
En tu caso, si devuelve 6 registros debe estar reptiendo los datos propios de las dos primeras tablas, pero los de la tercera deben ser distintos en algunos valores, ¿no?
Supongamos que te está devolviendo uno solo relacionado con un registro de la primera tabla con uno de la segunda y uno de la tercera. Luego uno de la primera con uno de la segunda, y con cinco de la tercera.
Eso no es producto cartesiano (PC). Si fuese un PC, en ese ejemplo debería devolverte venticuatro registros, no seis...
Es decir, dos de de la primera con cada uno de los dos de la segunda, y cada uno de esos con seis de la tercera... Serían 2 x 2 x 6.
¿Se entiende?