Saltar al contenido principal
Documentos
FuncionesExpresionesKeywordsDeclaracionesCláusulas

Cláusula LEFT JOIN de MySQL

La cláusula `LEFT JOIN` de MySQL se utiliza para recuperar todos los registros de la tabla izquierda y los registros coincidentes de la tabla derecha. Si no se encuentra ninguna coincidencia, el resultado es `NULL` de la tabla correcta.

Utilización

La cláusula `LEFT JOIN` se suele utilizar cuando quieres incluir todas las entradas de la tabla izquierda y sólo las de la tabla derecha que tengan valores coincidentes. Es especialmente útil para identificar registros no coincidentes en la tabla correcta.

SELECT columns
FROM left_table
LEFT JOIN right_table ON left_table.common_column = right_table.common_column;

En esta sintaxis, `LEFT JOIN` especifica que se devuelven todas las filas de `left_table`, con filas coincidentes de `right_table` y `NULL` cuando no haya ninguna coincidencia. La presencia de `NULL` indica que la fila correspondiente en la tabla de la derecha no existe.

Ejemplos

1. Básico LEFT JOIN

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

Este ejemplo recupera todos los empleados y sus correspondientes nombres de departamento. Si a un empleado no se le asigna un departamento, el nombre del departamento será `NULL`, lo que significa que no hay ningún registro coincidente en la tabla `departamentos`.

2. LEFT JOIN con cláusula WHERE

SELECT customers.customer_id, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
WHERE orders.order_id IS NULL;

Aquí, la consulta obtiene todos los clientes que no han realizado ningún pedido comprobando si hay valores `NULL` en el campo `order_id`, que indican registros no coincidentes.

3. Encadenar varias JOIN IZQUIERDAS

SELECT students.name, courses.course_name, instructors.instructor_name
FROM students
LEFT JOIN enrollments ON students.student_id = enrollments.student_id
LEFT JOIN courses ON enrollments.course_id = courses.course_id
LEFT JOIN instructors ON courses.instructor_id = instructors.instructor_id;

Este ejemplo muestra cómo encadenar varios `LEFT JOIN` para obtener una vista completa de alumnos, cursos e instructores, aunque algunos alumnos no estén matriculados en ningún curso.

Consejos y buenas prácticas

  • Especifica siempre la condición de unión. Define claramente las columnas a unir para evitar los productos cartesianos.
  • Utiliza LEFT JOIN cuando sea necesario. Opta por `LEFT JOIN` sólo cuando necesites todos los registros de la tabla izquierda, aunque no haya coincidencias en la tabla derecha.
  • Comprueba si hay NULLs. Utiliza condiciones como "ES NULL" o "NO ES NULL" para identificar los registros no coincidentes. Los valores `NULL` indican que una fila de la tabla derecha no coincide con ninguna de la izquierda.
  • Optimiza con índices. Asegúrate de que las columnas de unión están indexadas para mejorar el rendimiento. Los índices ayudan localizando rápidamente las filas y reduciendo significativamente el tiempo de ejecución de la consulta.
  • Ten cuidado con los grandes conjuntos de datos. Las JOIN IZQUIERDAS en tablas grandes pueden consumir muchos recursos; optimiza las consultas para manejar los datos grandes con eficacia.
  • Considera la posibilidad de utilizar INNER JOIN cuando sea apropiado. Si se espera que todos los resultados deseados tengan coincidencias en ambas tablas, un `INNER JOIN` podría ser más eficaz y claro.

Perfeccionamiento de SQL para principiantes

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