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|RIGHTOUTERJOIN table2
ON table1.common_column = table2.common_column;Con la tecnología de
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
LEFTJOIN table2 ON table1.common_column = table2.common_column
UNIONSELECT columns
FROM table1
RIGHTJOIN table2 ON table1.common_column = table2.common_column;Con la tecnología de
Ejemplos
1. Básico LEFT OUTER JOIN
SELECT customers.customer_id, orders.order_id
FROM customers
LEFTOUTERJOIN orders ON customers.customer_id = orders.customer_id;Con la tecnología de
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
RIGHTOUTERJOIN orders ON products.product_id = orders.product_id;Con la tecnología de
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
LEFTJOIN departments ON employees.department_id = departments.department_id
WHERE departments.department_name ISNULL;Con la tecnología de
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.
La palabra clave
OUTER JOINen 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 JOINse 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 simplementeLEFT JOIN) yRIGHT OUTER JOIN(o simplementeRIGHT JOIN).En esta sintaxis, la palabra clave
LEFT|RIGHT OUTER JOINdetermina 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 deLEFT JOINyRIGHT JOINcon unUNION.Ejemplos
1. Básico LEFT OUTER JOIN
Esta consulta recupera todos los clientes y sus pedidos, si los hay. Los clientes sin pedidos seguirán apareciendo en el resultado con
NULLen las columnas de pedido.2. UNIÓN EXTERNA DERECHA
Aquí se enumeran todos los pedidos, incluidos aquellos para los que no existe una entrada de producto correspondiente, rellenando
NULLpara los detalles del producto.3. Combinar LEFT JOIN con la cláusula WHERE
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
- Ten en cuenta el rendimiento. Las operaciones
- 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
- Utiliza DONDE con precaución. Al filtrar con
```LEFT JOINcuando necesites todos los registros de la primera tabla yRIGHT JOINcuando necesites todos los registros de la segunda tabla.OUTER JOINpueden 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.IFNULL()oCOALESCE()para sustituirNULLpor valores por defecto.WHERE, asegúrate de que no anula inadvertidamente el efecto delOUTER JOIN.