Relacion estre tablas

Quiero hacer un join entre tres tablas t1, t2 y t3.
En la tabla t1 hay campos que hacen refencia a la tablas t2 y t3, pero pueden tener valor o no.
Sin embargo quiero que apareccan los registros de las tablas t1 aunque no exista vinculación entre las tablas t2 y t3.

1 respuesta

Respuesta
1
Cuando haces una JOIN y algunas de las tablas relacionadas no tienen valor, si quieras que te aparezcan igualmente los registros tienes que utilizar el (+) en la where.
Me explico, si alguna tabla puede que no tenga datos ya que no es obligatorio que exista esa relación en la where y en el campo donde se puede dar esa posibilidad tienes que poner al final del campo (+).
Ejemplo:
Tenemos tres tablas (es un ejemplo cualquiera que no tiene mucha lógica conceptual pero sirve para hacernos entender)
- Tabla 1 (maestra): CLIENTES, clave ID_CLIENTE
- Tabla 2 (relacion 1 a n): CLI_DOMICILIOS, clave ID_CLIENTE,TIPO_DOM
- Tabla 3 (relacion 0 a n, puede que no tenga datos): CLI_PROFESIONES
ID_CLIENTE,ID_PROF
Al hacer la JOIN
SELECT A.*,B.*,C.*
FROM CLIENTES A, CLI_DOMICILIOS B, CLI_PROFESIONES C
WHERE A.ID_CLIENTE = B.ID_CLIENTE
AND A.ID_CLIENTE = C.ID_CLIENTE(+).
Como sabemos que en la tabla C (CLI_PROFESIONES) puede que no nos de registros le ponemos el (+) para que en caso de que no existan registros ignore la JOIN con esta tabla y por consiguiente mostrara el registro, es como si no la hubiera relacionado para un registro determinado.
Pruébalo con el (+) y sin el (+) y veras las diferencias, no olvides que se tiene que poner al campo de la tabla que no contiene registros.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas