Qué problema solucionan realmente los JOINs
Imagina una empresa que tiene una tabla llamada clientes con nombres, emails y ciudades. Luego tiene otra tabla llamada pedidos con fechas, importes y estados.
El problema es que ninguna tabla tiene toda la información. Si quieres saber cuánto ha comprado cada cliente necesitas unir ambas. Ahí aparece el JOIN.
La idea básica es sencilla: SQL busca una columna común entre dos tablas y utiliza ese dato para relacionarlas. Normalmente suele ser un identificador como id_cliente.
INNER JOIN: el inner join que solo devuelve coincidencias
El INNER JOIN es el más utilizado. Devuelve únicamente los registros que existen en ambas tablas. En la práctica, cuando alguien habla de un inner join, se refiere a esta consulta que cruza dos tablas y se queda solo con las filas que emparejan. Es decir, un sql inner join solo te devuelve las filas donde encuentra coincidencia en ambas partes.
SELECT clientes.nombre,
pedidos.fecha,
pedidos.importe
FROM clientes
INNER JOIN pedidos
ON clientes.id_cliente = pedidos.id_cliente; En este ejemplo, si un cliente existe pero nunca ha comprado nada, no aparecerá en el resultado. SQL se queda únicamente con aquellos registros donde encuentra coincidencia.
Es perfecto para informes como "ventas realizadas", "clientes con pedidos" o "productos vendidos". Un inner join en sql es, sin duda, la primera consulta de cruce que deberías dominar.
LEFT JOIN: el favorito para detectar información que falta
Aquí cambia la película. El LEFT JOIN mantiene todos los registros de la tabla izquierda aunque no tengan coincidencia en la derecha. El left join sql es el que más se utiliza en informes de oficina donde necesitas ver también los registros que no tienen pareja.
SELECT clientes.nombre,
pedidos.importe
FROM clientes
LEFT JOIN pedidos
ON clientes.id_cliente = pedidos.id_cliente; Si tienes 1.000 clientes y solo 700 han comprado, el resultado seguirá mostrando los 1.000 clientes. Los 300 restantes aparecerán con valores vacíos en la parte de pedidos.
En una oficina esto se utiliza muchísimo para encontrar cosas como:
- Clientes registrados pero sin compras.
- Empleados sin asignación de proyectos.
- Productos que nunca se han vendido.
RIGHT JOIN: igual que LEFT pero al revés
El RIGHT JOIN hace exactamente lo contrario: mantiene todos los datos de la tabla derecha.
SELECT clientes.nombre,
pedidos.importe
FROM clientes
RIGHT JOIN pedidos
ON clientes.id_cliente = pedidos.id_cliente; En la práctica se usa menos porque casi siempre puedes cambiar el orden de las tablas y conseguir el mismo resultado utilizando un LEFT JOIN, que suele ser más fácil de leer.
Ejemplo real: informe mensual de ventas
Supongamos que el departamento comercial necesita un listado con el nombre del cliente, la fecha del pedido y el importe total.
SELECT c.nombre_cliente,
p.fecha_pedido,
p.total
FROM clientes c
INNER JOIN pedidos p
ON c.id_cliente = p.id_cliente
WHERE p.estado = 'Completado'; Primero unimos las tablas, después filtramos los pedidos completados. Esta estructura, con un inner join sql como base, es la que normalmente verás en consultas profesionales.
Errores comunes usando JOINs
- Hacer un JOIN sin indicar correctamente la relación con
ON. Esto puede generar miles de filas duplicadas. - Confundir LEFT JOIN con INNER JOIN. Si necesitas mantener registros sin coincidencia, INNER JOIN los elimina.
- Unir columnas que no tienen el mismo tipo de dato. Un número y un texto aunque tengan el mismo valor pueden dar problemas.
- No revisar las claves utilizadas. Si
id_clienteno es único, el resultado puede multiplicarse.
Cómo elegir rápidamente qué JOIN necesitas
Una forma sencilla de pensarlo:
Si quieres "solo lo que coincide" → INNER JOIN.
Si quieres "todo lo de mi tabla principal aunque falten datos" → LEFT JOIN.
Si necesitas todos los datos de la segunda tabla → RIGHT JOIN.
Pro Tip
Cuando estés creando un JOIN complicado, empieza seleccionando solo los identificadores (id_cliente, id_pedido) para comprobar que la relación funciona. Después añade columnas poco a poco. Ahorrarás mucho tiempo buscando errores. Además, en muchos editores SQL puedes usar Ctrl + Enter para ejecutar rápidamente la consulta seleccionada.