SQL JOIN y diferentes tipos de JOINs

¿Qué es un JOIN SQL y cuáles son los diferentes tipos?

Una ilustración de W3schools:


INNER JOIN - Sólo los registros que cumplen la condición en ambas tablas]1


LEFT JOIN - Todos los registros de la tabla 1 junto con los registros que cumplen la condición en la tabla 2]2


RIGHT JOIN - Todos los registros de la tabla 2 junto con los registros de la tabla 1 que cumplen la condición]3


FULL OUTER JOIN - Combinación de las uniones externas izquierda y derecha que coinciden con la cláusula ON pero conservando ambas tablas]4


Comentarios (18)
Solución

¿Qué es el SQL JOIN?

El SQL JOIN es un método para recuperar datos de dos o más tablas de la base de datos.

¿Cuáles son los diferentes SQL JOINs?

Hay un total de cinco JOINs. Son los siguientes:

  1. JOIN or INNER JOIN
  2. OUTER JOIN

     2.1 LEFT OUTER JOIN or LEFT JOIN
     2.2 RIGHT OUTER JOIN or RIGHT JOIN
     2.3 FULL OUTER JOIN or FULL JOIN

  3. NATURAL JOIN
  4. CROSS JOIN
  5. SELF JOIN
  1. JOIN o INNER JOIN :

En este tipo de JOIN, obtenemos todos los registros que coinciden con la condición en ambas tablas, y los registros de ambas tablas que no coinciden no se reportan.

En otras palabras, el INNER JOIN se basa en el único hecho de que: SÓLO los registros que coinciden en AMBAS tablas DEBEN ser listados.

Tenga en cuenta que un JOIN sin ninguna otra palabra clave JOIN (como INNER, OUTER, LEFT, etc) es un INNER JOIN. En otras palabras, JOIN es un azúcar sintáctico para el INNER JOIN (véase: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).

  1. OUTER JOIN :

El OUTER JOIN recupera

O bien las filas coincidentes de una tabla y todas las filas de la otra tabla O bien todas las filas de todas las tablas (no importa si hay o no coincidencia).

Hay tres tipos de Outer Join :

2.1 LEFT OUTER JOIN o LEFT JOIN

Esta unión devuelve todas las filas de la tabla izquierda junto con las filas coincidentes de la tabla tabla derecha. Si no hay columnas que coincidan en la tabla derecha, devuelve valores NULL.

2.2 RIGHT OUTER JOIN o RIGHT JOIN

Este JOIN devuelve todas las filas de la tabla derecha junto con las filas coincidentes de la tabla izquierda. Si no hay columnas que coincidan en la tabla izquierda, devuelve valores NULL.

2.3 FULL OUTER JOIN o FULL JOIN

Este JOIN combina el LEFT OUTER JOIN y el RIGHT OUTER JOIN. Devuelve filas de cualquiera de las dos tablas cuando se cumplen las condiciones y devuelve el valor NULL cuando no hay coincidencias.

En otras palabras, OUTER JOIN se basa en el hecho de que SÓLO deben aparecer las entradas que coincidan en UNA de las tablas (DERECHA o IZQUIERDA) o en AMBAS tablas (COMPLETA).

Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
  1. JOIN NATURAL :

Se basa en las dos condiciones :

  1. el JOIN se realiza en todas las columnas con el mismo nombre para la igualdad.
  2. Elimina las columnas duplicadas del resultado.

Esto parece ser más de naturaleza teórica y como resultado (probablemente) la mayoría de los DBMS ni siquiera se molestan en soportarlo.

  1. CROSS JOIN :

Es el producto cartesiano de las dos tablas implicadas. El resultado de un CROSS JOIN no tendrá sentido en la mayoría de las situaciones. Además, no lo necesitaremos en absoluto (o necesita lo mínimo, para ser precisos).

  1. SELF JOIN :

No es una forma diferente de JOIN, sino que es un JOIN (INNER, OUTER, etc) de una tabla a sí misma.

JOINs basados en Operadores

Dependiendo del operador utilizado para una cláusula JOIN, puede haber dos tipos de JOIN. Estos son

  1. Equi JOIN

  2. Theta JOIN

  3. Equi JOIN :

Para cualquier tipo de JOIN (INNER, OUTER, etc), si utilizamos SOLO el operador de igualdad (=), entonces decimos que el JOIN es un EQUI JOIN.

  1. Theta JOIN :

Es lo mismo que EQUI JOIN pero permite todos los demás operadores como >, = etc.

Muchos consideran que tanto el EQUI JOIN como el JOIN de Theta son similares a los INNER, OUTER, etc.

etc JOINs. Pero creo firmemente que es un error y hace que las ideas vagas. Porque INNER JOIN, OUTER JOIN etc están todos conectados con las tablas y sus datos mientras que EQUI JOIN y THETA JOIN sólo están conectados con los operadores que usamos en los primeros.

De nuevo, hay muchos que consideran el NATURAL JOIN como una especie de "peculiar" EQUI JOIN. De hecho, es cierto, debido a la primera condición que he mencionado para NATURAL JOIN. Sin embargo, no tenemos que restringirlo simplemente a los "JOIN NATURALES". El INNER JOINs, el OUTER JOINs etc. también pueden ser un EQUI JOIN.

Comentarios (3)

Definición:


Los JOINS son una forma de consultar los datos que se combinan juntos de varias tablas simultáneamente.

Tipos de JOINS:


Con respecto a los RDBMS hay 5 tipos de joins:

  • Equi-Join: Combina los registros comunes de dos tablas basándose en la condición de igualdad. Técnicamente, la unión se realiza utilizando el operador de igualdad (=) para comparar los valores de la clave primaria de una tabla y los valores de la clave externa de otra tabla, por lo que el conjunto de resultados incluye registros comunes (coincidentes) de ambas tablas. Para la implementación vea INNER-JOIN.

  • Natural-Join: Es una versión mejorada de Equi-Join, en la que la operación SELECT omite la columna duplicada. Para la implementación ver INNER-JOIN

  • Non-Equi-Join: Es la versión inversa de Equi-join donde la condición de unión se utiliza en lugar del operador igual (=), por ejemplo, !=, =, >, < o BETWEEN etc. Para la implementación, véase INNER-JOIN.

  • Auto-Join:: Un comportamiento personalizado de join en el que una tabla se combina consigo misma; Normalmente se necesita para consultar tablas autorreferenciadas (o entidad de relación unitaria). Para la implementación ver INNER-JOINs.

  • Producto cartesiano:** Combina de forma cruzada todos los registros de ambas tablas sin ninguna condición. Técnicamente, devuelve el conjunto de resultados de una consulta sin cláusula WHERE.

Según la preocupación y el avance de SQL, hay 3 tipos de uniones y todas las uniones RDBMS se pueden lograr utilizando estos tipos de uniones.

    1. INNER-JOIN: Fusiona (o combina) filas coincidentes de dos tablas. La coincidencia se realiza en base a las columnas comunes de las tablas y su operación de comparación. Si la condición se basa en la igualdad entonces: EQUI-JOIN se realiza, de lo contrario Non-EQUI-Join.
  1. **Combina (o combina) las filas coincidentes de dos tablas y las filas no coincidentes con valores NULL. Sin embargo, puede personalizar la selección de las filas no coincidentes, por ejemplo, seleccionando la fila no coincidente de la primera tabla o de la segunda tabla por subtipos: LEFT OUTER JOIN y RIGHT OUTER JOIN.

    2.1. 2.1. JUNIÓN EXTERIOR IZQUIERDA (también conocida como LEFT-JOIN): Devuelve las filas coincidentes de dos tablas y las no coincidentes de la tabla IZQUIERDA (es decir, la primera tabla) solamente.

    2.2. JOIN EXTERIOR DERECHO (también conocido como RIGHT-JOIN): Devuelve las filas coincidentes de dos tablas y las no coincidentes de la tabla DERECHA solamente.

    2.3. 2.3. FULL OUTER JOIN (también conocido como OUTER JOIN): Devuelve las filas coincidentes y no coincidentes de ambas tablas.

    1. CROSS-JOIN: Esta unión no combina/se combina, sino que realiza un producto cartesiano.

[introduzca aquí la descripción de la imagen][1] Nota: La autounión puede realizarse mediante INNER-JOIN, OUTER-JOIN y CROSS-JOIN según los requisitos, pero la tabla debe unirse a sí misma.

Para más información:][2]

Ejemplos:

1.1: INNER-JOIN: Implementación de Equi-join

SELECT  *
FROM Table1 A 
 INNER JOIN Table2 B ON A. =B.;

1.2: INNER-JOIN: Implementación de Natural-JOIN

Select A.*, B.Col1, B.Col2          --But no B.ForeignKeyColumn in Select
 FROM Table1 A
 INNER JOIN Table2 B On A.Pk = B.Fk;

1.3: INNER-JOIN con implementación NON-Equi-join


Select *
 FROM Table1 A INNER JOIN Table2 B On A.Pk 
Comentarios (2)