JOIN es una cláusula que se usa en la instrucción SELECT que permite combinar dos tablas en un solo resultado, basándose en uno o más campos que comparten (campos llave). A diferencia de los operadores de conjuntos, las tablas en un Join pueden tener una estructura de campos diferentes, solo deben contar con uno o dos campos que compartan (llaves) para poder hacer la unión.
Dadas dos tablas cualesquiera, se pueden hacer 7 tipos de uniones (o joins) diferentes, atendiendo al resultado o a la combinación de dichas tablas. En general, se pueden resumir en los casos que continuación se muestran:
1.- Todos los registros de la primera tabla
SELECT campos
FROM primeraTabla A
LEFT JOIN segundaTabla B
ON A.llave = B.llave;
2.- Todos los registros de la segunda tabla
SELECT campos
FROM primeraTabla A
RIGHT JOIN segundaTabla B
ON A.llave = B.llave;
3.- Los registros de la primera tabla, excepto los que se encuentren en la segunda
SELECT campos
FROM primeraTabla A
LEFT JOIN segundaTabla B
ON A.llave = B.llave
WHERE B.llave IS NULL;
4.- Los registros de la segunda tabla, excepto los que se encuentren en la primera
SELECT campos
FROM primeraTabla A
RIGHT JOIN segundaTabla B
ON A.llave = B.llave
WHERE B.llave IS NULL;
5.- Los registros que se encuentren en ambas tablas, y solo en ambas
SELECT campos
FROM primeraTabla A
INNER JOIN segundaTabla B
ON A.llave = B.llave;
6.- Todos los registros de las dos tablas
SELECT campos
FROM primeraTabla A
FULL OUTER JOIN segundaTabla B
ON A.llave = B.llave;
7.- Los registros de las dos tablas, excepto los que se encuentren en ambas
SELECT campos
FROM primeraTabla A
FULL OUTER JOIN segundaTabla B
ON A.llave = B.llave
WHERE A.llave IS NULL OR B.llave IS NULL;
Estos joins son los que se implementan en SQL Server, siendo en las demás bases de datos muy similares -si no es que iguales-, por lo que se deberá revisar la sintáxis propia de cada motor de bases de datos relacional.
En términos generales existen 4 tipos diferentes de join:
Las 7 variantes expuestas al prinicipios no son más que alguna implementación de las 4 antes descritas.
La diferencia con los operadores de conjunto (UNION, INTERSECT y EXCEPT) es que en estos join no es necesario que las tablas que se quieren combinar tengan la misma estructura de campos; en los join se pueden extraer campos diferentes de las tablas a combinar, y el único requisito es que compartan una llave en común, es decir, una forma de unirlos o hacer que correspondan unos campos con otros.