La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado de Oracle (SQL) hay cinco tipos de JOINs: Natural JOIN, Self-join, Nonequijoins, Outer Join y Cross joins.
Matemáticamente, JOIN es composición relacional, la operación fundamental en el álgebra relacional, y, generalizando, es una función de composición.
Para entender como funciona la cláusula JOIN podemos ver el siguiente bloque de código
Podemos observar de forma reducida todos los tipos de JOINs que soporta una base de datos Oracle:
- NATURAL JOIN une dos tablas basándose en las columnas que tengan el mismo nombre.
- JOIN tabla2 USING nombre_columna realiza un equijoin basado en el nombre de columna que se especifica en la cláusula USING.
- JOIN tabla2 ON tabla1.nombre_columna = tabla2.nombre_columna realiza un equijoin basado en la condición que se especifica en la cláusula ON.
- LEFT / RIGHT / FULL OUTER son usados para realizar OUTER joins.
- CROSS JOIN regresa un producto cartesiano de dos tablas.
Natural Joins
La cláusula NATURAL JOIN esta basada en todas las columnas de las dos tablas que tengan el mismo nombre, por lo que seleccionara los registros de ambas tablas que tienen los mismos valores para las columnas que posean el mismo nombre.
Si por casualidad las columnas que poseen ambas tablas y coinciden en sus nombres tienen tipos de datos diferentes, se arrojará un error.
En este ejemplo la tabla departamentos es unida a la tabla empleados por la columna codigo_departamento, la cuál existe en ambas tablas. Si existiese otra columna con el mismo nombre y tipo de datos entre ambas tablas, el join las usaría a todas.
JOINS con la cláusula USING
Si varias columnas tienen el mismo nombre pero diferentes tipos de datos, puedes usar la cláusula USING para especificar las columnas con las que deseas realizar el equijoin. Es importante resaltar que el NATURAL JOIN y el USING son mutuamente exclusivos.
Nota: al realizar un join utilizando la cláusula USING no puedes utilizar la columna especificada intentando filtrarla desde una única tabla, es decir:
Bueno esto es todo por el día de hoy, próximamente les traeré un siguiente artículo con los demás tipos de JOIN en una base de datos Oracle.
0 Comments