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)