Transcripción 4.4.1. Ejemplos - Join Externo
Existen tablas que, al intentar relacionarlas mediante una columna, no emparejan sus registros. Por ejemplo, al intentar unir dos tablas cuyas columnas contienen valores nulos. Un NATURAL JOIN
no es adecuado en estos casos, ya que excluye los valores nulos.
En su lugar, es necesario utilizar JOIN
externos, que permiten recuperar valores nulos. Las combinaciones externas se realizan exclusivamente entre dos tablas. Existen tres tipos de combinaciones externas:
- Left outer join:
LEFT JOIN
- Right outer join:
RIGHT JOIN
- Full outer join:
FULL JOIN
LEFT JOIN: Encuentra todos los registros de la primera tabla que corresponden con los registros de la segunda tabla. Si no encuentra coincidencias, devuelve los resultados de la segunda seteados a null
.
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.
La diferencia con el NATURAL LEFT JOIN
es que aquí podemos especificar el campo de unión. Es importante el orden de las tablas, ya que la tabla de la izquierda es la que se usa para localizar registros en la tabla de la derecha. Puede tener 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: Trabaja igual que LEFT JOIN
solo que 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.
La diferencia con el NATURAL RIGHT JOIN
es que aquí podemos especificar el campo de unión. Al igual que en LEFT JOIN
es importante el orden de las tablas. Puede tener 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: Es una combinación externa completa. Muestra todos los registros de ambas tablas.
Ejemplo:SELECT first_name AS nombre, department_name AS departamento FROM employees e FULL JOIN departments d ON e.department_id = d.department_id;
ejemplos join externo