Combinaciones (Joins) en SQL: Tutorial Completo de Inner Join, Left Join, Right Join y Más
El presente tutorial proporciona una visión integral sobre uno de los aspectos más importantes del lenguaje SQL: los joins o combinaciones. Estas operaciones permiten combinar información de varias tablas relacionadas para obtener resultados útiles. Los join en sql, al igual que otros elementos, contribuyen significativamente a la estructura y visualización de las bases de datos.
Uno de los conceptos fundamentales de SQL es el uso de joins o combinaciones de dos o más tablas. Los joins nos ayudan a reconstruir nuestras tablas de base de datos separadas en relaciones que impulsan nuestras aplicaciones.
¿Qué es una combinación (join) en SQL?
En el contexto del lenguaje de consultas estructurado, las SQL joins son operaciones que permiten combinar información de varias tablas relacionadas para obtener resultados útiles.
Un join en sql es una herramienta fundamental en la base de datos para fusionar filas de diferentes tablas. Funciona al igualar columnas clave entre dos o más tablas, lo que permite alinear los datos e incluirlos en un solo conjunto de resultado.
Tipos de combinaciones: INNER JOIN, LEFT JOIN y RIGHT JOIN
INNER JOIN (JOIN EN SQL)
Un INNER JOIN es una operación que combina filas de dos tablas siempre que la información se relacione entre sí. Es decir, si se compara dos tablas que contienen un campo identificador en común como por ejemplo una ID o algún código de producto, y a ese campo le corresponde información válida tanto en las primeras tablas como en las segundos tabla, entonces el sistema devolverá exactamente la información correspondiente. No devuelve filas de ninguna de las tablas si no se encuentra coincidencia.
Un INNER JOIN utiliza un condición para definir cómo deben combinarse los conjuntos de filas de dos o más tablas.
LEFT JOIN (JOIN EN SQL)
El LEFT JOIN es una operación que combina filas de dos tablas. Mientras que el INNER JOIN solo devuelve la información donde la identificación coincide exactamente en las dos tablas, un LEFT JOIN incluye toda la información correspondiente de ambas tablas y si no se encuentra coincidencia con los campos ID (cada uno) del campo identificador para una fila de la primera tabla, el resultado es NULL o "sin dato" o sin valor.
Es decir, que siempre aparece la información del lado izquierdo.
Cómo utilizar el INNER JOIN
El Inner Join es una de las combinaciones más comunes utilizadas en SQL, y se utiliza para recuperar datos que cumplen con la relación entre dos o más tablas. La sintaxis del INNER JOIN varía dependiendo del sistema gestor de bases de datos (SGDB) utilizado.
Ejemplo básico de INNER JOIN
Supongamos que tenemos las siguientes tablas:
| Tabla "clientes" |
| --- |
| id_cliente | nombre | edad |
| 1 | Juan | 25 |
| 2 | Maria | 30 |
| 3 | Pedro | 35 |
| Tabla "pedidos" |
| --- |
| idpedido | clienteid | fecha |
| 101 | 1 | 2020-01-01 |
| 102 | 2 | 2020-02-02 |
| 103 | 1 | 2020-03-03 |
Para recuperar los datos de clientes con pedidos, podríamos utilizar el INNER JOIN de la siguiente manera:
sql
SELECT c.id_cliente, p.fecha
FROM clientes c
INNER JOIN pedidos p ON c.id_cliente = p.cliente_id;
La consulta anterior mostrará los siguientes resultados:
| id_cliente | fecha |
| --- | --- |
| 1 | 2020-01-01 |
| 1 | 2020-03-03 |
| 2 | 2020-02-02 |
El INNER JOIN es utilizado para recuperar datos que cumplen con la relación entre dos o más tablas. Puede ser utilizado de manera efectiva para mejorar la eficiencia y reducir la complejidad de las consultas SQL.
Ejemplos de INNER JOIN
Ejemplo 1: Un simple ejemplo de join
Supongamos que tenemos dos tablas:
empleados
(con columnas id, nombre y salario)departamentos
(con columnas id, nombre del departamento y ubicación)
Podemos usar un INNER JOIN para combinar estas dos tablas según el id del empleado.
sql
SELECT e.nombre, d.nombre AS departamento, e.salario
FROM empleados e INNER JOIN departamentos d
ON e.id = d.id;
Ejemplo 2: Un ejemplo de join con múltiples condiciones
Supongamos que tenemos dos tablas:
pedidos
(con columnas id_pedido, fecha y total)clientes
(con columnas id_cliente, nombre del cliente y dirección)
Podemos usar un INNER JOIN para combinar estas dos tablas según el id del cliente.
sql
SELECT p.fecha, c.nombre AS cliente, p.total
FROM pedidos p INNER JOIN clientes c
ON p.id_cliente = c.id AND p.fecha > '2022-01-01';
Ejemplo 3: Un ejemplo de join con subconsultas
Supongamos que tenemos una tabla pedidos
y queremos saber el nombre del cliente para cada pedido, pero solo si el total del pedido es mayor a $1000.
sql
SELECT p.fecha, c.nombre AS cliente
FROM pedidos p INNER JOIN clientes c
ON p.id_cliente = c.id AND p.total > 1000;
Los joins de SQL son una herramienta poderosa para combinar información de varias tablas relacionadas. En este artículo hemos visto algunos ejemplos básicos y más complejos que demuestran la variedad y flexibilidad del lenguaje SQL para realizar operaciones de combinación.
Cómo utilizar el LEFT JOIN
El LEFT JOIN, también conocido como Left Outer Join, es una combinación de SQL que combina todos los registros de una tabla con la información correspondiente de otra tabla. A continuación se presentarán los pasos básicos para utilizar este tipo de combinaciones.
Si deseas buscar en las dos tablas, puedes usar el LEFT JOIN para mostrar todas las filas de la primera tabla junto con el resultado del segundo filtro, incluso si no hay coincidencia.
El LEFT JOIN se utiliza cuando se requiere que todos los registros de una tabla estén incluidos en el resultado, independientemente de si existen coincidencias en la otra tabla. Esto es especialmente útil para obtener información de todos los clientes que tienen pedidos pendientes.
Por ejemplo:
sql
SELECT o.order_id,
c.customer_name
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.customer_id;
En el código anterior, la combinación de SQL joins devuelve todas las filas del conjunto de datos orders
y combinalas con la información del conjunto de datos customers
, en función de si existe un campo coincidente.
Ejemplos de LEFT JOIN
Los LEFT JOIN son útiles cuando necesitamos combinar filas de una tabla (la tabla del lado izquierdo) con las filas correspondientes de otra tabla (la tabla del lado derecho), incluso si no hay coincidencia.
Un ejemplo común es un sistema de pedidos, donde deseamos mostrar los detalles de cada pedido independientemente de si se ha realizado la entrega o no. En este caso, podemos utilizar un LEFT JOIN para combinar las filas de la tabla de pedidos con la tabla de pedidos entregados (si existe).
Por ejemplo, si tenemos dos tablas: Pedidos y Pedidos_Entregados:
| IdPedido | FechaPedido |
| --- | --- |
| 1 | 01/01/2022 |
| 2 | 15/02/2022 |
| IdPedido | FechaEntrega |
| --- | --- |
| 1 | 05/02/2022 |
| 3 | 20/03/2022 |
Con un LEFT JOIN podemos obtener los siguientes resultados:
| IdPedido | FechaPedido | Fecha_Entrega |
| --- | --- | --- |
| 1 | 01/01/2022 | 05/02/2022 |
| 2 | 15/02/2022 | NULL |
| 3 | NULL | 20/03/2022 |
En este ejemplo, podemos ver que los pedidos con el id 1 y 2 se muestran junto con su fecha de pedido, mientras que el pedido con el id 3 no tiene coincidencia en la tabla de Pedidos_Entregados.
Cómo utilizar el RIGHT JOIN
El RIGHT JOIN, también conocido como derecho o combinación a la derecha es una forma de unir dos tablas basadas en sus campos clave (clave primaria y clave externa).
Cuando se utiliza el RIGHT JOIN, todos los registros del conjunto derecho (conjunto derecho), incluso si no hay coincidencia con el conjunto izquierdo (conjunto izquierdo) se incluyen en la salida. En otras palabras, cada registro del conjunto derecho aparecerá, y sus campos que faltan para que coincida con un registro del conjunto izquierdo se completarán con NULL.
El siguiente ejemplo ilustra cómo utilizar el RIGHT JOIN:
```sql
CREATE TABLE clientes (
id INT PRIMARY KEY,
nombre VARCHAR(255)
);
INSERT INTO clientes (id, nombre) VALUES
(1, 'Juan'),
(2, 'Pedro');
CREATE TABLE compras (
clienteid INT,
cantidad INT,
precio DECIMAL(10,2),
FOREIGN KEY (clienteid) REFERENCES clientes(id)
);
INSERT INTO compras (cliente_id, cantidad, precio) VALUES
(1, 5, 19.99),
(3, 10, 29.99); /* Cliente con ID=3 no existe en la tabla clientes */
SELECT c.nombre AS cliente,
coalesce(c.clientes.id, 'Sin coincidencia') AS idcliente,
p.cantidad,
p.precio
FROM compras p
RIGHT JOIN clientes c ON p.clienteid = c.id;
```
En este ejemplo, cuando el RIGHT JOIN es realizado se incluyen todos los clientes de la tabla "clientes". Para cada cliente, si hay una coincidencia con un registro en la tabla "compras", se muestra el precio de ese producto. Si no existe el cliente en la tabla "compras", se mostrará como sin coincidencia y NULL para los campos que faltan (cantidad y precio).
Diferencias entre LEFT JOIN y RIGHT JOIN
Un INNER JOIN, LEFT JOIN (izquierdo) y RIGHT JOIN (derecho) son algunos de los tipos más comunes de joins en SQL que permiten combinar información de varias tablas relacionadas para obtener resultados útiles.
- Los sql joins, o combinaciones, nos ayudan a reconstruir nuestras tablas de base de datos separadas en relaciones que impulsan nuestras aplicaciones.
- Un join es una operación que combina dos filas juntas en una fila. Las combinaciones o joins permiten alinear información de varias tablas para crear nuevos conjuntos de resultados.
A continuación, se presentarán las diferencias más importantes entre un LEFT JOIN y RIGHT JOIN.
LEFT JOIN (Izquierdo)
Un Left Join (también conocido como izquierdo) es una operación de combinación que devuelve todos los registros de la tabla izquierda. Por lo tanto, si hay filas en la tabla derecha sin coincidir, las filas de la tabla izquierda se devuelven con NULLS.
En otras palabras, un LEFT JOIN recupera todas las filas de la tabla izquierda y los registros de la tabla derecha que correspondan. Si no hay una correspondencia en la tabla derecha, el resultado es una fila con todos los campos de la izquierda poblados y NULLS para la información que no coincide.
RIGHT JOIN (Derecho)
Un Right Join (también conocido como derecho) es similar a un LEFT JOIN pero recupera todos los registros de la tabla derecha. Por lo tanto, si hay filas en la tabla izquierda sin coincidir, las filas de la tabla derecha se devuelven con NULLS.
En otras palabras, un RIGHT JOIN recupera todas las filas de la tabla derecha y los registros de la tabla izquierda que correspondan. Si no hay una correspondencia en la tabla izquierda, el resultado es una fila con todos los campos de la derecha poblados y NULLS para la información que no coincide.
Resumen
Un LEFT JOIN recupera todas las filas de la tabla izquierda (y los registros de la tabla derecha si coinciden). Un RIGHT JOIN recupera todas las filas de la tabla derecha (y los registros de la tabla izquierda si coinciden).
Tanto un LEFT JOIN como un RIGHT JOIN pueden devolver NULLS en los campos que no coincidan con ninguno de sus pares.
Cómo utilizar otros tipos de combinaciones: FULL OUTER JOIN, CROSS JOIN y SELF JOIN
Además del INNER JOIN, LEFT JOIN y RIGHT JOIN, hay otros join en sql que se utilizan dependiendo de la necesidad específica de tu consulta.
FULL OUTER JOIN
Un FULL OUTER JOIN combina dos tablas devolviendo todos los registros de ambas tablas. Si no existe coincidencia entre las filas de cada tabla, todavía devuelve todas las filas con valores nulos.
Por ejemplo:
| ID_Persona | Nombre |
| --- | --- |
| 1 | Juan |
| ID_Producto | Producto |
| --- | --- |
| 1 | Laptop |
| 2 | Tablet |
FULL OUTER JOIN en SQL
sql
SELECT *
FROM personas
FULL OUTER JOIN productos ON personas.ID_Persona = productos.ID_Persona;
CROSS JOIN
Un CROSS JOIN es un tipo de join que combina cada fila de una tabla con cada fila de otra, generando filas cruzadas.
Por ejemplo:
| ID | Nombre |
| --- | --- |
| 1 | Juan |
| ID | Color |
| --- | --- |
| 1 | Azul |
| 2 | Rojo |
CROSS JOIN en SQL
sql
SELECT *
FROM personas
CROSS JOIN colores;
SELF JOIN
Un SELF JOIN es un tipo de join que combina una tabla con ella misma utilizando alguna columna común.
Por ejemplo:
| ID_Persona | Nombre |
| --- | --- |
| 1 | Juan |
| IDHermano | IDPersona |
| --- | --- |
| 2 | 1 |
SELF JOIN en SQL
sql
SELECT *
FROM personas p1
INNER JOIN personas p2 ON p1.ID_Persona = p2.ID_Hermano;
Los joins son uno de los aspectos más importantes del lenguaje SQL, ya que permiten combinar datos de varias tablas para obtener resultados útiles.
Conclusión
El tutorial completo sobre combinaciones o joins en SQL nos ha proporcionado una visión exhaustiva de las diversas formas en que podemos combinar información de varias tablas relacionadas para obtener resultados útiles.
El uso adecuado de los distintos tipos de joins, como INNER JOIN, LEFT JOIN y RIGHT JOIN, puede mejorar significativamente la eficiencia y la precisión de nuestros consultas SQL. Al entender las reglas básicas y principios subyacentes de cada tipo de join en sql, podemos tomar decisiones informadas sobre cómo combinar información para satisfacer las necesidades específicas de nuestras aplicaciones.
Algunos de los aspectos clave que hemos cubierto incluyen la forma en que se utilizan las cláusulas ON y USING para especificar el tipo de joins y los campos a usar, así como cómo se pueden combinar varias tablas a través de múltiples joins sql, creando complejos pero potentes consultas.
Si quieres conocer otros artículos parecidos a Combinaciones (Joins) en SQL: Tutorial Completo de Inner Join, Left Join, Right Join y Más puedes visitar la categoría Programacion.
Deja una respuesta
Contenido que te pude interesar