Transcripción Join Externo
Existen tablas que, al intentar relacionarlas mediante una columna, presentan registros que no se emparejan. Un caso común ocurre cuando se busca emparejar dos tablas que contienen valores nulos. En estos casos, un **Natural Join** no resulta útil, ya que excluye los valores nulos.
En su lugar, es necesario utilizar **Join externos**, que permiten recuperar los valores nulos. Las combinaciones externas se realizan exclusivamente entre dos tablas y hay tres tipos principales de combinaciones externas:
- Left outer join: conocido como **left join**.
- Right outer join: conocido como **right join**.
- Full outer join: conocido como **full join**.
LEFT JOIN: Este tipo de join recupera los registros de la primera tabla que coinciden con los de la segunda. Si no hay coincidencias, los resultados de la segunda tabla se muestran como nulos.
Ejemplo:SELECT first_name AS nombre, department_name AS departamento FROM hr.employees e LEFT JOIN hr.departments d ON e.department_id = d.department_id;
A diferencia del **Natural Left Join**, aquí podemos especificar el campo de unión. Es importante tener en cuenta el orden de las tablas, ya que la tabla de la izquierda es la que se utiliza para localizar registros en la tabla de la derecha. Además, puede incluir una cláusula **WHERE** que restrinja el resultado de la consulta.
Ejemplo:SELECT first_name AS nombre, department_name AS departamento FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id WHERE d.department_id IS NOT NULL;
Ejemplo:SELECT first_name AS nombre, department_name AS departamento FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id WHERE d.department_id IS NULL;
RIGHT JOIN: Este join funciona de manera similar al Left Join, pero la tabla derecha es la que localiza los registros en la tabla izquierda.
Ejemplo:SELECT first_name AS nombre, department_name AS departamento FROM hr.employees e RIGHT JOIN hr.departments d ON e.department_id = d.department_id;
Al igual que con el **Natural Right Join**, en este caso también podemos especificar el campo de unión. Es importante mantener el orden de las tablas y se puede incluir una cláusula **WHERE**:
- Ejemplo:
SELECT first_name AS nombre, department_name AS departamento FROM employees e RIGHT JOIN departments d ON e.department_id = d.department_id WHERE e.department_id IS NOT NULL;
- Ejemplo:
SELECT first_name AS nombre, department_name AS departamento FROM employees e RIGHT JOIN departments d ON e.department_id = d.department_id WHERE e.department_id IS NULL;
FULL OUTER JOIN O FULL JOIN: Esta combinación externa muestra todos los registros de ambas tablas, independientemente de si hay coincidencias.
Ejemplo:SELECT first_name AS nombre, department_name AS departamento FROM employees e FULL JOIN departments d ON e.department_id = d.department_id;
join externo