Unidad 10 – JOINS en SQL
Propósito de la unidad
Comprender cómo combinar información de múltiples tablas mediante relaciones, utilizando distintos tipos de JOIN para obtener resultados coherentes y útiles.
1. ¿Qué es un JOIN?
- JOIN
- Permite combinar filas de dos o más tablas basándose en una relación común (normalmente una llave primaria y una llave foránea).
Ejemplo de contexto
Tablas:
clientes (id_cliente, nombre)pedidos (id_pedido, id_cliente, total)
Relación:
clientes.id_cliente=pedidos.id_cliente
2. INNER JOIN – Coincidencias exactas
- INNER JOIN
- Devuelve únicamente los registros que tienen coincidencia en ambas tablas.
Sintaxis
SELECT columnas
FROM tabla1
INNER JOIN tabla2
ON tabla1.columna = tabla2.columna;
Ejemplo
-- Mostrar clientes con pedidos
SELECT clientes.nombre, pedidos.total
FROM clientes
INNER JOIN pedidos
ON clientes.id_cliente = pedidos.id_cliente;
Si un cliente no tiene pedidos, no aparecerá en el resultado.
3. LEFT JOIN – Todos los registros de la izquierda
- LEFT JOIN
- Devuelve todos los registros de la tabla izquierda, y los coincidentes de la tabla derecha.
Sintaxis
SELECT columnas
FROM tabla1
LEFT JOIN tabla2
ON tabla1.columna = tabla2.columna;
Ejemplo
-- Mostrar todos los clientes, tengan o no pedidos
SELECT clientes.nombre, pedidos.total
FROM clientes
LEFT JOIN pedidos
ON clientes.id_cliente = pedidos.id_cliente;
Si no hay coincidencia, los valores de la tabla derecha serán NULL.
4. RIGHT JOIN – Todos los registros de la derecha
- RIGHT JOIN
- Devuelve todos los registros de la tabla derecha, y los coincidentes de la tabla izquierda.
Sintaxis
SELECT columnas
FROM tabla1
RIGHT JOIN tabla2
ON tabla1.columna = tabla2.columna;
Ejemplo
-- Mostrar todos los pedidos, incluso si no tienen cliente asociado
SELECT clientes.nombre, pedidos.total
FROM clientes
RIGHT JOIN pedidos
ON clientes.id_cliente = pedidos.id_cliente;
5. Comparación de JOINs
| Tipo de JOIN | ¿Qué devuelve? |
|---|---|
| INNER JOIN | Solo coincidencias |
| LEFT JOIN | Todo de la izquierda + coincidencias |
| RIGHT JOIN | Todo de la derecha + coincidencias |
6. Uso correcto de relaciones
- Relación
- Conexión entre tablas mediante llaves primarias (PK) y foráneas (FK).
Buenas prácticas
- Usar llaves primarias únicas>
- Relacionar tablas mediante llaves foráneas>
-
Nombrar columnas de forma clara (
id_cliente,id_pedido)> - Evitar datos duplicados>
- Usar JOIN en lugar de repetir información>
Ejemplo de modelo correcto
-- Tabla clientes
CREATE TABLE clientes (
id_cliente INT PRIMARY KEY,
nombre VARCHAR(100)
);
-- Tabla pedidos
CREATE TABLE pedidos (
id_pedido INT PRIMARY KEY,
id_cliente INT,
total DECIMAL(10,2),
FOREIGN KEY (id_cliente) REFERENCES clientes(id_cliente)
);
Integración de conceptos
SELECT clientes.nombre, COUNT(pedidos.id_pedido) AS total_pedidos
FROM clientes
LEFT JOIN pedidos
ON clientes.id_cliente = pedidos.id_cliente
GROUP BY clientes.nombre
ORDER BY total_pedidos DESC;
Errores comunes
- No usar correctamente la condición ON
- Confundir LEFT JOIN con INNER JOIN
- No considerar valores NULL en resultados
- Relaciones mal definidas (sin llaves foráneas)