Cita: Mi problema es el siguiente, cuando los datos relacionados no se encuentran en las dos tablas me devuelve null, se encuentra en una pero en otro no pero aun asi me devuelve null enves de los datos de la tabla que si tiene información.
La única forma en que suceda lo que dices es cuando usas
LEFT JOIN, que
es un caso específico de JOIN, que tiene por objetivo devolver todo lo de la primera tabla (a la izquierda en el FROM), tenga o no coincidencias con la tabla de la derecha, y donde no hay coincidencias, devolver NULL
Esto significa que
ese es el comportamiento normal de la consulta, y si tu problema es que no puedes manejar las columnas que contienen NULL, hay dos soluciones:
1) Debes invocar una a una las columnas que consultas, aplicandoles una función que cambie el NULL recibido por otro dato:
En este ejemplo los campos e, f, y g provienen de la segunda tabla.
2) Puedes controlarlo en el programa (off-topic de este foro), porque todos los lenguajes pueden manejar datos NULL, y modificas el valor representado a la hora de mostrarlo en pantalla.
La decisión de usar uno u otro es tuya.
Ahora bien, si sólo quieres que salgan los datos efctivamente relacionados, no se debe usar LEFT JOIN: