Saltar al contenido

¿Cuál es la diferencia entre INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN?

Nuestros investigadores estrellas han agotado sus provisiones de café, por su búsqueda día y noche por la resolución, hasta que Ángel halló la respuesta en Gitea por lo tanto ahora la compartimos aquí.

Solución:

Leyendo este artículo original sobre El proyecto de código te ayudará mucho: Representación visual de SQL Joins.

texto alternativo

Consulte también esta publicación: SQL SERVER – Better Performance – LEFT JOIN or NOT IN ?.

Encuentre uno original en: Diferencia entre JOIN y OUTER JOIN en MySQL.

Una cláusula SQL JOIN se utiliza para combinar filas de dos o más tablas, basándose en un campo común entre ellas.

Hay diferentes tipos de combinaciones disponibles en SQL:

UNIR INTERNAMENTE: devuelve filas cuando hay una coincidencia en ambas tablas.

UNIRSE A LA IZQUIERDA: devuelve todas las filas de la tabla de la izquierda, incluso si no hay coincidencias en la tabla de la derecha.

UNIRSE CORRECTAMENTE: devuelve todas las filas de la tabla de la derecha, incluso si no hay coincidencias en la tabla de la izquierda.

ÚNETE COMPLETO: Combina los resultados de las uniones externas izquierda y derecha.

La tabla unida contendrá todos los registros de ambas tablas y completará los NULL para las coincidencias que faltan en cualquier lado.

AUTO UNIRSE: se utiliza para unir una tabla consigo misma como si fueran dos tablas, cambiando temporalmente el nombre de al menos una tabla en la instrucción SQL.

UNIRSE CARTESIANO: devuelve el producto cartesiano de los conjuntos de registros de dos o más tablas unidas.

Podemos tomar cada cuatro primeras uniones en Detalles:

Tenemos dos tablas con los siguientes valores.

TableA

id  firstName                  lastName
.......................................
1   arun                        prasanth                 
2   ann                         antony                   
3   sruthy                      abc                      
6   new                         abc                                           

TableB

id2 age Place
................
1   24  kerala
2   24  usa
3   25  ekm
5   24  chennai

………………………………………….. ………………

UNIR INTERNAMENTE

Nota : da la intersección de las dos tablas, es decir, las filas que tienen en común en TableA y TableB

Sintaxis

SELECT table1.column1, table2.column2...
  FROM table1
 INNER JOIN table2
    ON table1.common_field = table2.common_field;

Aplíquelo en nuestra tabla de muestra:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 INNER JOIN TableB
    ON TableA.id = TableB.id2;

El resultado será

firstName       lastName       age  Place
..............................................
arun            prasanth        24  kerala
ann             antony          24  usa
sruthy          abc             25  ekm

UNIRSE A LA IZQUIERDA

Nota : dará todas las filas seleccionadas en TableA, más cualquier fila seleccionada común en TableB.

Sintaxis

SELECT table1.column1, table2.column2...
  FROM table1
  LEFT JOIN table2
    ON table1.common_field = table2.common_field;

Aplíquelo en nuestra tabla de muestra:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  LEFT JOIN TableB
    ON TableA.id = TableB.id2;

Resultado

firstName                   lastName                    age   Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL

UNIRSE CORRECTAMENTE

Nota : dará todas las filas seleccionadas en TableB, más cualquier fila seleccionada común en TableA.

Sintaxis

SELECT table1.column1, table2.column2...
  FROM table1
 RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

Aplíquelo en nuestra tabla de muestra:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 RIGHT JOIN TableB
    ON TableA.id = TableB.id2;

Resultado

firstName                   lastName                    age     Place
...............................................................................
arun                        prasanth                    24     kerala
ann                         antony                      24     usa
sruthy                      abc                         25     ekm
NULL                        NULL                        24     chennai

ÚNETE COMPLETO

Nota : Devolverá todos los valores seleccionados de ambas tablas.

Sintaxis

SELECT table1.column1, table2.column2...
  FROM table1
  FULL JOIN table2
    ON table1.common_field = table2.common_field;

Aplíquelo en nuestra tabla de muestra:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  FULL JOIN TableB
    ON TableA.id = TableB.id2;

Resultado

firstName                   lastName                    age    Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL
NULL                        NULL                        24    chennai

Dato interesante

Para INNER se une, el orden no importa

Para uniones EXTERIORES (IZQUIERDA, DERECHA o COMPLETA), el orden importa

Es mejor ir a comprobar esto Enlace le dará detalles interesantes sobre el pedido de unión

UNIR INTERNAMENTE obtiene todos los registros que son comunes entre ambas tablas según la cláusula ON proporcionada.

UNIRSE A LA IZQUIERDA obtiene todos los registros del enlace IZQUIERDO y el registro relacionado de la tabla derecha, pero si ha seleccionado algunas columnas de la tabla DERECHA, si no hay registros relacionados, estas columnas contendrán NULL.

UNIRSE CORRECTAMENTE es como el anterior pero obtiene todos los registros en la tabla DERECHA.

ÚNETE COMPLETO obtiene todos los registros de ambas tablas y pone NULL en las columnas donde los registros relacionados no existen en la tabla opuesta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *