combinacion-tablas-con-joins-sql

Combinación de tablas en SQL con JOIN

  • 3 min

Hasta este momento, nuestras bases de datos parecían una colección de islas aisladas. Teníamos una tabla de Clientes por un lado y una tabla de Pedidos por otro.

De momento está bien. Pero el modelo relacional tiene sentido, precisamente, cuando conectamos esas islas para componer resultados más complejos.

La cláusula JOIN es el mecanismo que nos permite combinar filas de dos o más tablas basándonos en una columna relacionada entre ellas.

Es, sin duda, la operación más importante y frecuente en SQL, y una de la más difícil de visualizar y aprender. Así que vamos a ir poco a poco para entenderlos bien, entre este y el siguiente artículo.

Sintaxis de un JOIN

En realidad, la sintaxis general de un JOIN es siempre la misma,

FROM Tabla_Izquierda AliasA
[TIPO] JOIN Tabla_Derecha AliasB 
    ON AliasA.Columna = AliasB.Columna
Copied!
  • Tabla_Izquierda (Left): Es la primera tabla que escribes.
  • [TIPO]: Aquí es donde eliges el tipo de JOIN.
  • Tabla_Derecha (Right): Es la tabla que quieres anexar.
  • ON …: Define qué columnas deben coincidir para considerar que dos filas son pareja.

Para SQL, el orden de lectura importa. La tabla que pongas primero, (en el FROM), es la que consideraremos “a la izquierda”.

La diferencia entre un tipo y otro de JOIN será

  • El TIPO que pongamos (se veía venir¿no?)
  • La asociacion de valores que hagamos en el ON…

Tipos de JOIN

Los principales tipos de JOIN que vamos a ver son los siguientes

TipoDescripción¿Genera NULLs?
INNERSolo coincidenciasNo
LEFTTodo lo de la izquierda + coincidencias(en la derecha)
RIGHTTodo lo de la derecha + coincidencias(en la izquierda)
FULLTodo lo de ambos lados(en ambos lados)

El INNER JOIN es el tipo de JOIN más común.

Devuelve solo las filas que tienen coincidencias en ambas tablas. Si no hay coincidencias, no se incluyen en el resultado.

El LEFT JOIN devuelve todas las filas de la tabla izquierda (la primera tabla mencionada en la consulta) y las filas coincidentes de la tabla derecha.

Si no hay coincidencias en la tabla derecha, se devuelven valores NULL para las columnas de esa tabla.

El RIGHT JOIN es similar al LEFT JOIN, pero devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda.

Si no hay coincidencias en la tabla izquierda, se devuelven valores NULL para las columnas de esa tabla.

El FULL JOIN devuelve todas las filas de ambas tablas, combinando las filas que tienen coincidencias y devolviendo NULL para las columnas de la tabla que no tiene coincidencias.

Los veremos con mayor tranquilidad en el próximo artículo

Visualizando los JOINS

Para entender qué hace SQL Server cuando cruzamos tablas, lo mejor es visualizarlo como Diagramas de Venn (conjuntos matemáticos).

Dependiendo de qué parte de los círculos pintemos (la intersección, solo la izquierda, todo…), obtendremos unos datos u otros.