Saltar al contenido principal
Documentos
FuncionesExpresionesKeywordsDeclaracionesCláusulas

Palabra clave MySQL OUTER JOIN

```html

La palabra clave OUTER JOIN en MySQL se utiliza para recuperar registros de dos tablas, incluidos aquellos registros que no tienen valores coincidentes en las tablas relacionadas. Garantiza que todos los registros de una tabla se incluyan en los resultados, y cuando no se encuentren coincidencias, se rellenen con NULLs las columnas de la tabla correspondiente.

Utilización

OUTER JOIN se emplea cuando necesitas incluir todas las filas de una o ambas tablas, independientemente de que haya una coincidencia en la otra tabla. Existen dos tipos principales: LEFT OUTER JOIN (o simplemente LEFT JOIN) y RIGHT OUTER JOIN (o simplemente RIGHT JOIN).

SELECT columns
FROM table1
LEFT|RIGHT OUTER JOIN table2
ON table1.common_column = table2.common_column;

En esta sintaxis, la palabra clave LEFT|RIGHT OUTER JOIN determina qué filas de la tabla se conservan íntegramente en el conjunto de resultados.

Nota sobre FULL OUTER JOIN

MySQL no admite directamente FULL OUTER JOIN. Sin embargo, puedes conseguir resultados similares utilizando una combinación de LEFT JOIN y RIGHT JOIN con un UNION.

SELECT columns
FROM table1
LEFT JOIN table2 ON table1.common_column = table2.common_column
UNION
SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.common_column = table2.common_column;

Ejemplos

1. Básico LEFT OUTER JOIN

SELECT customers.customer_id, orders.order_id
FROM customers
LEFT OUTER JOIN orders ON customers.customer_id = orders.customer_id;

Esta consulta recupera todos los clientes y sus pedidos, si los hay. Los clientes sin pedidos seguirán apareciendo en el resultado con NULL en las columnas de pedido.

2. UNIÓN EXTERNA DERECHA

SELECT products.product_id, orders.order_id
FROM products
RIGHT OUTER JOIN orders ON products.product_id = orders.product_id;

Aquí se enumeran todos los pedidos, incluidos aquellos para los que no existe una entrada de producto correspondiente, rellenando NULL para los detalles del producto.

3. Combinar LEFT JOIN con la cláusula WHERE

SELECT employees.employee_id, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id
WHERE departments.department_name IS NULL;

Esta consulta encuentra empleados no asignados a ningún departamento listando todos los empleados y filtrando los que tienen nombres de departamento NULL.

Consejos y buenas prácticas

  • Elige el tipo de unión correcto. Utiliza LEFT JOIN cuando necesites todos los registros de la primera tabla y RIGHT JOIN cuando necesites todos los registros de la segunda tabla.
  • Ten en cuenta el rendimiento. Las operaciones OUTER JOIN pueden ser costosas en términos de rendimiento; asegúrate de que se utilizan índices en las columnas de unión. Analizar los planes de ejecución de las consultas puede ayudar a optimizar el rendimiento.
  • Ten cuidado con los NULL. Considera cómo tu aplicación o las consultas posteriores tratarán los valores NULL en el conjunto de resultados. Utiliza funciones como IFNULL() o COALESCE() para sustituir NULL por valores por defecto.
  • Utiliza DONDE con precaución. Al filtrar con WHERE, asegúrate de que no anula inadvertidamente el efecto del OUTER JOIN.
```

Perfeccionamiento de SQL para principiantes

Adquiere los conocimientos de SQL para interactuar con tus datos y consultarlos.
Empieza a aprender gratis