JOIN en MariaDB: combinar conjuntos de datos de múltiples tablas

En un sistema de gestión de bases de datos relacionales, puedes comparar conjuntos de datos de distintas tablas, lo que te permite enlazar y encontrar los valores que coinciden en ambas tablas con la cláusula JOIN de MariaDB. Esta cláusula se utiliza en combinación con SELECT y se puede dividir en diferentes categorías, como INNER JOIN, LEFT OUTER JOIN y RIGHT OUTER JOIN, que te mostramos en detalle.

Sintaxis y funcionamiento

Para darte una visión general de las diferentes cláusulas JOIN en MariaDB, te mostramos primero la sintaxis básica. INNER JOIN tiene el siguiente aspecto:

SELECT columna(s)
FROM tabla_1
INNER JOIN tabla_2
ON tabla_1.columna = tabla_2.columna;
sql

Utiliza SELECT para seleccionar la columna (o columnas) con la(s) que quieres trabajar. Reemplaza el marcador de posición “tabla_1” con tu primera tabla y “tabla_2” con la segunda tabla que quieres combinar. INNER JOIN te permite comparar todas las filas de la primera tabla con todas las filas de la segunda tabla. Los resultados que coinciden (es decir, que están presentes en ambas tablas) se muestran juntos en una tabla de resultados. Las entradas que no coinciden no se tienen en cuenta.

Ejemplo de INNER JOIN en MariaDB

Aquí tienes un ejemplo sencillo para que veas cómo funciona INNER JOIN en MariaDB. Necesitamos un base de datos con dos tablas; la primera tabla la llamaremos “Lista de clientes” y la segunda “Pedidos”. Primero, creamos la tabla “Lista_de_clientes” con MariaDB CREATE TABLE. Contiene las columnas “Numero_de_cliente”, “Apellido”, “Nombre”, “Ciudad” y “Fecha_de_creacion”. El código es el siguiente:

CREATE TABLE Lista_de_clientes (
	Numero_de_cliente INT PRIMARY KEY,
	Apellido VARCHAR(50),
	Nombre VARCHAR(50),
	Ciudad VARCHAR(50),
	Fecha_de_creacion DATE
);
sql

Rellenamos la tabla con algunos valores utilizando INSERT INTO:

INSERT INTO Lista_de_clientes VALUES
(1, 'García', 'Martina', 'Madrid', '2022-07-19'),
(2, 'Martínez', 'Bernd', 'Barcelona', '2023-03-03'),
(3, 'López', 'Pedro', 'Sevilla', '2023-07-09'),
(4, 'Sánchez', 'Sara', 'Valencia', '2023-12-10'),
(5, 'Fernández', 'Luis', 'Zaragoza', '2024-01-17');
sql

Luego, creamos la tabla “Pedidos”, que contiene las columnas “Numero_de_pedido”, “Numero_de_articulo”, “Nombre_de_cliente” y “Fecha_de_pedido”. El código es el siguiente:

CREATE TABLE Pedidos (
	Numero_de_pedido INT AUTO_INCREMENT PRIMARY KEY,
	Numero_de_articulo INT,
	Nombre_de_cliente VARCHAR(50),
	Fecha_de_pedido DATE
);
sql

También completamos dicha tabla con valores de ejemplo:

INSERT INTO Pedidos VALUES
(101, 247, 'García', '2024-02-20'),
(102, 332, 'López', '2024-03-03'),
(103, 247, 'Rodríguez', '2024-03-09'),
(104, 191, 'Martínez', '2024-03-17'),
(105, 499, 'Hernández', '2024-03-17');
sql

Ahora utilizamos INNER JOIN de MariaDB para filtrar por aquellos clientes que aparecen en la tabla “Lista_de_clientes” y han realizado un pedido, es decir, aparecen en la tabla “Pedidos”:

SELECT Lista_de_clientes.Numero_de_cliente, Lista_de_clientes.Apellido, Pedidos.Numero_de_pedido, Pedidos.Numero_de_articulo
FROM Lista_de_clientes
INNER JOIN Pedidos
ON Lista_de_clientes.Apellido = Pedidos.Nombre_de_cliente;
sql

El sistema revisa la columna “Apellido” de la tabla “Lista_de_clientes” y la columna “Nombre_de_cliente” de la tabla “Pedidos”. Si ambos valores coinciden, se incluyen en la respuesta. Como los clientes García, Martínez y López aparecen en ambas tablas, se emite el siguiente resultado:

Numero_de_cliente Apellido Numero_de_pedido Numero_de_articulo
1 García 101 247
2 Martínez 104 191
3 López 102 332

LEFT OUTER JOIN

El LEFT OUTER JOIN en MariaDB funciona de forma similar y utiliza una sintaxis casi idéntica. Sin embargo, a diferencia de INNER JOIN, en el caso de LEFT OUTER JOIN se muestran todos los conjuntos de datos de la primera tabla o tabla izquierda (en nuestro ejemplo, la tabla “Lista_de_clientes”) y solo los conjuntos de datos que coincidan de la segunda tabla o tabla derecha (en nuestro ejemplo, la tabla “Pedidos”). Si el valor de la segunda tabla no coincide, aparece NULL en la celda correspondiente. Siguiendo el ejemplo anterior, el comando sería el siguiente:

SELECT Lista_de_clientes.Apellido, Pedidos.Numero_de_articulo
FROM Lista_de_clientes
LEFT OUTER JOIN Pedidos
ON Lista_de_clientes.Apellido = Pedidos.Nombre_de_cliente;
sql

Se obtiene el siguiente resultado:

Apellido Numero_de_articulo
García 247
Martínez 191
López 332
Sánchez NULL
Fernández NULL

RIGHT OUTER JOIN

En MariaDB, RIGHT OUTER JOIN funciona exactamente al revés. Los datos de la segunda tabla o tabla derecha se combinan con los valores que coincidan de la primera tabla o tabla izquierda. Si no coinciden, al igual que con LEFT OUTER JOIN, aparece el valor NULL en la celda correspondiente. Aquí tienes el código:

SELECT Lista_de_clientes.Apellido, Pedidos.Numero_de_articulo
FROM Lista_de_clientes
RIGHT OUTER JOIN Pedidos
ON Lista_de_clientes.Apellido = Pedidos.Nombre_de_cliente;
sql

Se obtiene el siguiente resultado:

Nombre_de_cliente Numero_de_articulo
García 247
López 332
NULL 247
Martínez 191
NULL 499
Consejo

En nuestra Digital Guide encontrarás muchas instrucciones y explicaciones útiles sobre MariaDB. Por ejemplo, encontrarás una comparación entre MariaDB y MySQL y todo lo que necesitas saber sobre cómo instalar MariaDB.

¿Le ha resultado útil este artículo?
Page top