Comando JOIN
Clase 16 de 24 • Curso de SQL y MySQL 2018
Contenido del curso
CREATE
INSERT
Bash y archivos SQL
SELECT
Consultas en MySQL
Contenido Bonus
Aprende a convertir datos sueltos en información clara y accionable con JOINs en SQL. Aquí se muestra cómo pasar de IDs a nombres y títulos reales, usando INNER JOIN, WHERE, BETWEEN e IN, más aliases y una tabla pivote. Verás ejemplos reales con autores, libros, clientes y transacciones, listos para reportes legibles.
¿Por qué relacionar tablas con inner join transforma datos en información?
Relacionar tablas es el corazón de una base de datos relacional. Saber quién es el autor, el cliente y el libro no basta si todo está fragmentado por IDs. Con INNER JOIN unimos tablas y mostramos nombres, títulos y acciones en una sola vista legible.
- De números a contexto: IDs por nombres y títulos reales.
- Consultas legibles: SQL claro y mantenible con aliases y condiciones.
- Reportes útiles: selección de columnas clave para lectura rápida.
¿Cómo elegir una tabla pivote y usar aliases?
La estrategia inicia eligiendo una tabla pivote, por ejemplo, books como B. Luego se usa authors como A y se conecta con ON A.author_id = B.author_id. Los aliases acortan y clarifican el SQL.
SELECT B.book_id, A.name, B.title
FROM books AS B
JOIN authors AS A ON A.author_id = B.author_id
WHERE A.author_id BETWEEN 1 AND 5;
- Se filtra con BETWEEN para incluir límites.
- Se seleccionan columnas necesarias: id del libro, nombre del autor y título.
- Idea clave: el campo author_id existe en ambas tablas; traer A.author_id o B.author_id da lo mismo para mostrar.
¿Qué revela el cruce authors y books?
Primero se acota el universo: autores con ID del 1 al 5. Nombres mencionados: Julio Cortázar, Octavio Paz, Arthur Conan Doyle, Chuck Palahniuk, Juan Rulfo. Hechos compartidos:
- Existencias: 197 libros y 132 autores.
- Ejemplos de resultados: Rayuela con Julio Cortázar, Laberinto de la soledad con Octavio Paz, Aventuras completas de Sherlock Holmes con Arthur Conan Doyle.
- Detección de casos: un autor (Chuck Palahniuk) sin libros registrados.
¿Cómo seleccionar y filtrar con where, between e in?
Las condiciones convierten listados masivos en respuestas puntuales. WHERE restringe filas, BETWEEN es útil para enteros y fechas, e IN concentra múltiples opciones sin repetir OR.
¿Cómo acotar rangos con between?
Para traer libros cuyo author_id esté entre 1 y 5:
SELECT book_id, author_id, title
FROM books
WHERE author_id BETWEEN 1 AND 5;
- Rango inclusivo: incluye 1 y 5.
- Lectura clara: fácil de mantener y entender.
¿Cómo combinar filtros por género y tipo con where e in?
Partiendo de una consulta que une transacciones con libros y clientes, se filtra por género y tipo de transacción:
SELECT C.name, B.title, T.type
FROM transactions AS T
JOIN books AS B ON T.book_id = B.book_id
JOIN clients AS C ON T.client_id = C.client_id
WHERE C.gender = 'mujer' AND T.type = 'sell';
- Muestra ventas a clientas con título y acción.
- Ejemplos vistos: María Teresa Castillo y Juana María López.
Con múltiples opciones de tipo se usa IN:
SELECT C.name, B.title, T.type
FROM transactions AS T
JOIN books AS B ON T.book_id = B.book_id
JOIN clients AS C ON T.client_id = C.client_id
WHERE C.gender = 'masculino' AND T.type IN ('sell', 'length');
- IN evita repetir condiciones.
- Los valores deben coincidir exactamente con los almacenados.
¿Cómo unir múltiples tablas para reportes con transactions, books, clients y authors?
Armar reportes legibles implica unir más de dos tablas. Se toma como pivote transactions (T), se conecta con books (B), clients (C) y luego con authors (A) a través de la relación desde books.
SELECT C.name AS client_name, B.title AS book_title, A.name AS author_name, T.type
FROM transactions AS T
JOIN books AS B ON T.book_id = B.book_id
JOIN clients AS C ON T.client_id = C.client_id
JOIN authors AS A ON B.author_id = A.author_id;
- Arquitectura: T pivote, luego B y C por claves t.book_id y t.client_id, y A por b.author_id.
- Lectura rápida: quién hizo qué acción sobre qué libro, y de qué autor.
- Buenas prácticas: SQL debe ser legible; usar AS para aliases.
Detalles útiles mencionados:
- Algunas columnas pueden coincidir por nombre entre tablas, pero lo importante es relacionarlas por valores equivalentes.
- Se pueden encadenar muchos JOINs si existe necesidad y relación clara.
- Se anticipa el uso de LEFT JOIN para incluir registros sin correspondencia, muy útil cuando faltan datos.
¿Te gustaría ver más ejemplos de filtros por fechas con BETWEEN o de combinaciones complejas con IN? Comparte tus dudas y casos de uso en los comentarios.