Lesión 5.1 · Tiempo de lectura: ~8 min
Un SQL JOIN combina filas de dos o más tablas basadas en una columna relacionada. En esta lección aprenderás el concepto básico detrás del JOIN, cómo escribir una condición ON, por qué son importantes los alias de tablas y cómo consultar datos relacionados de la base de datos Sakila paso a paso.
SQL JOIN: Cómo Combinar Tablas en Bases de Datos Relacionales
En bases de datos relacionales, la información se almacena como un conjunto de tablas relacionadas. Para extraer datos significativos de ellas, necesitas saber cómo unirlas. La operación JOIN en SQL se utiliza para este propósito. Permite combinar filas de dos o más tablas basadas en una columna relacionada.
Esta lección sienta las bases para entender el JOIN como un concepto clave para trabajar con datos relacionales.
¿Qué es un SQL JOIN y cómo funciona?
Un JOIN es un mecanismo que permite combinar filas de diferentes tablas en un único conjunto de resultados. La unión se realiza en base a una condición que, en la mayoría de los casos, compara valores en columnas clave.
Imagina dos tablas: customer y payment. La tabla payment tiene una columna customer_id que indica qué cliente realizó el pago. Un JOIN te permite "pegar" las filas de estas dos tablas para que, por cada pago, puedas ver el nombre del cliente, no solo su ID.
Cómo funciona:
- Especificas las dos tablas que deseas unir.
- Defines la condición de unión en la cláusula
ON, por ejemplo,customer.customer_id = payment.customer_id. - La base de datos revisa las filas, encuentra pares coincidentes y forma nuevas filas combinadas a partir de ellas.
Visualización:
Tabla A (customer) Tabla B (payment)
+----+-------+ +----+----------+
| id | name | | id | amount |
+----+-------+ +----+----------+
| 1 | Ivan | <-----\ | 1 | 100.00 |
| 2 | Maria | \--->| 1 | 50.00 |
| 3 | Petr | | 3 | 200.00 |
+----+-------+ +----+----------+
Las flechas muestran cómo las filas de la tabla payment encuentran su cliente correspondiente en la tabla customer basándose en el id coincidente.
Cómo Usar JOIN en la Práctica: Ejemplos de Sakila
Veamos cómo se ve esto en una consulta SQL real utilizando la base de datos Sakila.
Obteniendo una lista de clientes y sus pagos: Esta consulta une las tablas
customerypaymentpara mostrar el nombre y apellido del cliente junto a cada pago.SELECT c.first_name, c.last_name, p.amount, p.payment_date FROM customer AS c JOIN payment AS p ON c.customer_id = p.customer_id;JOIN payment AS pespecifica que estamos uniendo la tablapayment.ON c.customer_id = p.customer_ides la condición que define cómo están relacionadas las filas.cypson alias, que hacen que la consulta sea más corta y legible.
Obteniendo una lista de películas y su idioma: Unamos las tablas
filmylanguagepara mostrar el título de cada película y el idioma en el que está.SELECT f.title, l.name AS language FROM film AS f JOIN language AS l ON f.language_id = l.language_id;Aquí, la relación se establece a través de la clave
language_id.
Puntos clave de esta lección:
- Un SQL JOIN combina filas de dos o más tablas en un único conjunto de resultados.
- La condición ON define cómo están relacionadas las filas de diferentes tablas, generalmente mediante la coincidencia de columnas clave.
- Los alias de tablas (
customer AS c) acortan las consultas y las hacen más fáciles de leer. JOINno modifica los datos originales; crea un conjunto de resultados temporal.- En las siguientes lecciones exploraremos
INNER JOIN,LEFT JOIN,RIGHT JOINyFULL JOINen detalle.
→ INNER JOIN — Combinando Filas Coincidentes
Preguntas Frecuentes
¿Cuál es la diferencia entre JOIN e INNER JOIN?
En SQL, un JOIN sin especificar es una abreviatura de INNER JOIN. Producen resultados idénticos. La palabra clave explícita INNER JOIN se prefiere a menudo por claridad, especialmente al mezclar diferentes tipos de uniones en la misma consulta.
¿Qué sucede si la condición ON no coincide con ninguna fila?
Si ninguna fila satisface la condición ON, un INNER JOIN devuelve un conjunto de resultados vacío. No se genera un error; la consulta simplemente devuelve cero filas. Otros tipos de uniones (LEFT JOIN, etc.) manejan filas no coincidentes de manera diferente.
¿Puedes unir más de dos tablas en una consulta?
Sí. Puedes encadenar múltiples cláusulas JOIN en una sola consulta, cada una con su propia condición ON. La base de datos las procesa de izquierda a derecha, construyendo el conjunto de resultados progresivamente.
Preguntas de Entrevista
¿Cómo explicarías JOIN a un colega no técnico?
Un JOIN es como usar un ID compartido para buscar información relacionada en dos hojas de cálculo. Por ejemplo, si una hoja lista clientes con IDs y otra lista pagos con IDs de clientes, un JOIN te permite ver cada pago con el nombre del cliente, sin duplicar datos en ninguna hoja.
¿Qué es la cláusula ON y por qué es necesaria?
La cláusula ON especifica la condición que conecta filas de las dos tablas. Sin ella (o sin una condición válida), la base de datos produciría un producto cartesiano: cada fila de la primera tabla emparejada con cada fila de la segunda, lo cual rara vez es útil y potencialmente enorme.
¿Por qué usar alias de tablas en consultas JOIN?
Los alias de tablas hacen que las consultas sean más cortas y sin ambigüedades. Cuando dos tablas comparten un nombre de columna (por ejemplo, ambas tienen id), los alias te permiten escribir c.id frente a p.id, de modo que la base de datos y el lector sepan exactamente a qué columna se refiere.