# 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:

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

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](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/mariadb-create-table/). Contiene las columnas “Numero\_de\_cliente”, “Apellido”, “Nombre”, “Ciudad” y “Fecha\_de\_creacion”. El código es el siguiente:

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

Rellenamos la tabla con algunos valores utilizando `INSERT INTO`:

```sql
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');
```

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:

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

También completamos dicha tabla con valores de ejemplo:

```sql
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');
```

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”:

```sql
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;
```

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:

<table>
  <thead>
    <tr>
      <th>Numero\_de\_cliente</th>
      <th>Apellido</th>
      <th>Numero\_de\_pedido</th>
      <th>Numero\_de\_articulo</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>García</td>
      <td>101</td>
      <td>247</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Martínez</td>
      <td>104</td>
      <td>191</td>
    </tr>
    <tr>
      <td>3</td>
      <td>López</td>
      <td>102</td>
      <td>332</td>
    </tr>
  </tbody>
</table>

## `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:

```sql
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;
```

Se obtiene el siguiente resultado:

<table>
  <thead>
    <tr>
      <th>Apellido</th>
      <th>Numero\_de\_articulo</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>García</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Martínez</td>
      <td>191</td>
    </tr>
    <tr>
      <td>López</td>
      <td>332</td>
    </tr>
    <tr>
      <td>Sánchez</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>Fernández</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

## `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:

```sql
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;
```

Se obtiene el siguiente resultado:

<table>
  <thead>
    <tr>
      <th>Nombre\_de\_cliente</th>
      <th>Numero\_de\_articulo</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>García</td>
      <td>247</td>
    </tr>
    <tr>
      <td>López</td>
      <td>332</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Martínez</td>
      <td>191</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>499</td>
    </tr>
  </tbody>
</table>

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](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/mariadb-vs-mysql/) y todo lo que necesitas saber sobre cómo [instalar MariaDB](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/instalar-mysql/).


This is a markdown version of: [https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/mariadb-join/](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/mariadb-join/) for AI/LLM consumption.