El Poder de las Relaciones
Los JOINs son quizas la caracteristica mas poderosa de SQL. Permiten combinar datos de multiples tablas basandose en sus relaciones, abriendo un mundo de posibilidades para el analisis de datos.
INNER JOIN: Solo Coincidencias
INNER JOIN devuelve solo los registros que tienen coincidencia en ambas tablas:
SELECT o.id, c.nombre, o.fecha, o.total
FROM pedidos o
INNER JOIN clientes c ON o.cliente_id = c.id;LEFT JOIN: Todos los de la Izquierda
LEFT JOIN devuelve todos los registros de la tabla izquierda, incluso si no hay coincidencias:
SELECT c.nombre, COUNT(p.id) as num_pedidos
FROM clientes c
LEFT JOIN pedidos p ON c.id = p.cliente_id
GROUP BY c.id;RIGHT JOIN: Todos los de la Derecha
Opuesto al LEFT JOIN, devuelve todos los registros de la tabla derecha:
SELECT p.nombre, c.nombre as categoria
FROM productos p
RIGHT JOIN categorias c ON p.categoria_id = c.id;Multiples JOINs
Puedes encadenar multiples JOINs para tablas relacionadas:
SELECT
p.nombre as producto,
c.nombre as categoria,
prov.nombre as proveedor
FROM productos p
INNER JOIN categorias c ON p.categoria_id = c.id
INNER JOIN proveedores prov ON p.proveedor_id = prov.id;Ejemplo Practico: Dashboard de Ventas
SELECT
CONCAT(e.nombre, , e.apellido) as vendedor,
COUNT(DISTINCT v.id) as pedidos,
SUM(v.monto) as total_vendido,
AVG(v.monto) as ticket_promedio
FROM vendedores v
INNER JOIN empleados e ON v.vendedor_id = e.id
WHERE v.fecha BETWEEN 2025-01-01 AND 2025-12-31
GROUP BY e.id
ORDER BY total_vendido DESC;