Left JOIN

Clase 17 de 24Curso de SQL y MySQL 2018

Resumen

¿Qué es un Inner Join?

El mundo del manejo de bases de datos está lleno de técnicas y conceptos que permiten recuperar y manipular datos de manera eficiente. Uno de los métodos más conocidos y utilizados es el Inner Join. Este tipo de join es el predeterminado en los sistemas de gestión de bases de datos relacionales, y su función principal es cruzar o combinar filas de dos o más tablas basándose en una condición que debe cumplirse en ambas.

Cuando decimos 'cruzar tablas', nos referimos al proceso por el que los datos de diferentes tablas se vinculan gracias a una clave común (como un ID, por ejemplo). Este join mas común, es un 'join implícito': es posible usarlo sin mencionarlo explícitamente en el query SQL como se muestra aquí:

SELECT book.name, book.title, a.name 
FROM authors AS a, books AS b 
WHERE a.authorId = b.authorId;

Sin embargo, muchas veces se prefiere utilizar la forma explícita del Inner Join, que proporciona una mejor legibilidad y mantenimiento del código SQL:

SELECT book.name, book.title, a.name 
FROM books AS b 
INNER JOIN authors AS a ON a.authorId = b.authorId;

La diferencia entre estos dos enfoques es meramente de estilo, dado que ambos queries están diseñados para devolver el mismo conjunto de datos, es decir, los libros junto a sus respectivos autores.

¿Cuándo usar un Left Join?

Ahí donde el Inner Join solo devuelve filas donde existen coincidencias en ambas tablas, el Left Join permite superar esta limitación. Al usar un Left Join, la consulta retornará todas las filas de la tabla de la izquierda (izquierda, desde la perspectiva de la cláusula SQL), y las filas de la tabla de la derecha solo si existen coincidencias. Si no hay coincidencias, el resultado será NULL para las columnas de la tabla de la derecha.

Veamos un ejemplo práctico. Supongamos que queremos listar todos los autores, incluyendo aquellos que no tienen libros:

SELECT a.authorId, a.name, b.title 
FROM authors AS a 
LEFT JOIN books AS b ON a.authorId = b.authorId;

Este query traerá todos los autores, y si alguno no tiene libros, el campo correspondiente al título del libro será NULL.

Un Left Join es particularmente útil cuando estamos interesados en encontrar todas las instancias de un registro primario, incluso cuando no hay un registro asociado en la tabla secundaria.

¿Cómo utilizar funciones de agrupación?

Con una comprensión sólida de Inner y Left Joins, podemos comenzar a explorar funciones más avanzadas como COUNT. Esta función es crucial para contar registros o agrupaciones dentro de una base de datos. Por ejemplo, si queremos saber cuántos libros ha escrito cada autor, podríamos usar lo siguiente:

SELECT a.name, COUNT(b.bookId) AS book_count 
FROM authors AS a 
LEFT JOIN books AS b ON a.authorId = b.authorId 
GROUP BY a.authorId;

Al usar GROUP BY, estamos especificando el punto sobre el que vamos a realizar la agregación, asegurando que cada autor reciba su conteo correcto de libros.

Experimentar con diferentes combinaciones de Inner y Left join, además de las funciones de agrupación, nos permitirá crear consultas más robustas y funcionales. Entender cómo las distribuciones de datos impactan en la disponibilidad y visibilidad dentro de nuestras consultas SQL, nos da una ventaja estratégica a la hora de diseñar aplicaciones robustas y bien fundamentadas.