19th Ave New York, NY 95822, USA
+1 916-875-2235
+1 916-875-2235

SQL Joins, explicación

La sentencia Join permite combinar registros de una o más tablas

En el Lenguaje de Consultas Estructurado (SQL) existen varios tipos de JOINS. A continuación, se muestra una visualización gráfica.


Para realizar los ejemplos, partiremos de las siguientes tablas:

TABLA_A
  Id Valor
---- ----------
   1 EEUU
   2 PORTUGAL
   3 ITALIA
   6 FRANCIA
   7 POLONIA
   5 ALEMANIA
   4 RUSIA
  10 CHINA

TABLA_B
  Id Valor
---- ----------
   1 LUXEMBURGO
   2 ITALIA
   3 SUECIA
   6 RUSIA
   7 EMIRATOS ÁRABES
   8 POLONIA
   9 ESPAÑA
  11 FRANCIA

Inner JOIN

SELECT A.Id AS A_Id, A.Valor AS A_Valor,
       B.Valor AS B_Valor, B.Id AS B_Id
FROM TABLA_A A
INNER JOIN TABLA_B B
ON A.Id = B.Id

Resultado:

A_Id A_Valor B_VALOR B_ID
1 EEUU LUXEMBURGO 1
2 PORTUGAL ITALIA 2
3 ITALIA SUECIA 3
6 FRANCIA RUSIA 6
7 ALEMANIA EMIRATOS ÁRABES 7

 

Left JOIN

SELECT A.id AS A_id, A.Valor AS A_Valor,
B.Valor AS B_Valor, B.id AS B_id
FROM TABLA_A A
LEFT JOIN TABLA_B B
ON A.id = B.id

Resultado:

A_Id A_Valor B_VALOR B_ID
1 EEUU LUXEMBURGO 1
2 PORTUGAL ITALIA 2
3 ITALIA SUECIA 3
6 FRANCIA RUSIA 6
7 ALEMANIA EMIRATOS ÁRABES 7
5 EEUU Null Null
4 RUSIA Null Null
10 CHINA Null Null

Right JOIN

SELECT *
FROM TABLA_A A
RIGHT JOIN TABLA_B B
ON A.Id = B.Id

Resultado:

Id Valor Id Valor
1 EEUU 1 LUXEMBURGO
2 PORTUGAL 2 ITALIA
3 ITALIA 3 SUECIA
6 FRANCIA 6 RUSIA
7 ALEMANIA 7 EMIRATOS ÁRABES
Null Null 8 POLONIA
Null Null 9 ESPAÑA
Null Null 11 FRANCIA

Outer JOIN

SELECT *
FROM TABLA_A A
FULL OUTER JOIN TABLA_B B
ON A.Id = B.Id

Resultado:

Id Valor Id Valor
1 EEUU 1 LUXEMBURGO
2 PORTUGAL 2 ITALIA
3 ITALIA 3 SUECIA
6 FRANCIA 6 RUSIA
7 ALEMANIA 7 EMIRATOS ÁRABES
5 EEUU Null Null
4 RUSIA Null Null
10 CHINA Null Null
Null Null 8 POLONIA
Null Null 9 ESPAÑA
Null Null 11 FRANCIA

 

Left Excluding JOIN

SELECT * 
FROM TABLA_A A
LEFT JOIN TABLA_B B
ON A.Id = B.Id
WHERE B.Id IS NULL

Resultado:

Id Valor Id Valor
5 EEUU Null Null
4 RUSIA Null Null
10 CHINA Null Null

Right Excluding JOIN

SELECT * 
FROM TABLA_A A
RIGHT JOIN TABLA_B B
ON A.Id = B.Id
WHERE B.Id IS NULL

Resultado:

Id Valor Id Valor
Null Null 8 POLONIA
Null Null 9 ESPAÑA
Null Null 11 FRANCIA

Outer Excluding JOIN

SELECT *
FROM TABLA_A A
FULL OUTER JOIN TABLA_B B
ON A.Id = B.Id
WHERE A.Id IS NULL OR B.Id IS NULL

Contenidos relacionados