Comando JOIN

Clase 16 de 24Curso de SQL y MySQL 2018

Resumen

¿Cómo establecer relaciones entre tablas en una base de datos relacional?

Cuando hablamos de bases de datos relacionales, el núcleo de utilidad radica en las relaciones que podemos crear entre las tablas. Este sistema nos permite conectar diferentes piezas de información para convertir datos aislados en información comprensible y valiosa. Por ejemplo, un libro registrado con su autor y el cliente que lo rentó tiene poco valor si solo está relacionado por identificadores. Lo más útil es saber que "Juan Pérez alquiló 'Cien Años de Soledad' de Gabriel García Márquez", ofreciendo una imagen clara y completa al usuario.

¿Cómo realizar una unión entre autores y libros?

Para comenzar, establezcamos una conexión sencilla entre dos tablas: autores y libros. Imaginemos que tenemos una lista con 197 libros y 132 autores. Un autor puede haber escrito varios libros, lo que nos lleva a preguntarnos cómo obtenemos esta correspondencia de información.

Podemos utilizar el siguiente comando para obtener un listado específico de autores:

SELECT * FROM authors WHERE authorID > 0 AND authorID <= 5;

Y para los libros:

SELECT bookID, authorID, title FROM books WHERE authorID BETWEEN 1 AND 5;

Pero estos datos aún no están relacionados. Para hacerlo, se utiliza un JOIN:

SELECT B.bookID, A.name, B.title
FROM books AS B
JOIN authors AS A ON A.authorId = B.authorId
WHERE A.authorID BETWEEN 1 AND 5;

Este JOIN nos permite ver directamente los títulos de los libros asociados a sus autores correspondientes.

¿Qué papel juegan los joins en la gestión de datos?

Los joins son herramientas poderosas que nos permiten conectar y mostrar datos relacionados entre diferentes tablas de manera integrada. Pensemos en ellso como una puerta que conecta diferentes salas llenas de información. La forma más comúnmente utilizada es el inner join, que simplemente tomaremos como join.

¿Cómo crear un join con múltiples tablas?

Podemos realizar joins entre más de dos tablas para organizar mejor los datos. Supongamos que quisiéramos ver no solo qué libros pertenecen a qué autores, sino también qué clientes han interactuado con esos libros. Para ello, integraríamos tablas de transacciones, clientes, libros y autores.

Aquí mostraré cómo unir las tres tablas mediante un ejemplo de consulta:

SELECT C.name, B.title, T.type
FROM transactions AS T
JOIN books AS B ON T.bookID = B.bookID
JOIN clients AS C ON T.clientID = C.clientID;

Podemos extender con más condiciones para afinar los resultados, como por ejemplo:

¿Cómo establecer condiciones en nuestras consultas con joins?

Los joins no solo nos permiten interconectar tablas, sino también establecer condiciones para refinar nuestros resultados, por ejemplo, enfocándonos sólo en ventas realizadas a clientes mujeres:

SELECT C.name, B.title, A.name
FROM transactions AS T
JOIN books AS B ON T.bookID = B.bookID
JOIN clients AS C ON T.clientID = C.clientID
JOIN authors AS A ON B.authorID = A.authorID
WHERE C.gender = 'Female' AND T.type = 'sell';

¿Qué tan flexibles pueden ser nuestros queries con joins?

La flexibilidad de los queries radica no solo en combinar tablas, sino también en aplicar diferentes tipos de condicionales y órdenes. Mediante el uso de IN podemos definir múltiples posibilidades en un mismo campo, enriqueciendo la consulta:

SELECT C.name, B.title, A.name
FROM transactions AS T
JOIN books AS B ON T.bookID = B.bookID
JOIN clients AS C ON T.clientID = C.clientID
JOIN authors AS A ON B.authorID = A.authorID
WHERE C.gender = 'Male' AND T.type IN ('sell', 'lend');

Al manejar estas herramientas efectivamente, habilitamos un análisis de datos más potente y resistente, optimizando la transformación de datos en información útil.

La utilización eficaz de estas técnicas no sólo nos ayuda a evitar errores al manejar grandes volúmenes de datos sino que también destaca la interconexión vital que poseen las bases de datos relacionales. Cada join efectuado, cada consulta bien elaborada nos acerca más a un entendimiento profundo y utilizable del universo de datos que manejemos.