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


Esta pregunta ya tiene una respuesta aquí:

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


1201
2018-04-18 17:15


origen


Respuestas:


Leyendo este artículo original en El Proyecto de Código te ayudará mucho: Representación Visual de uniones SQL.

alt text

También mira esta publicación: SERVIDOR SQL - Mejor rendimiento - ¿UNIÓN IZQUIERDA o NO ENTRADA?.

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


2491
2018-05-31 13:29



UNIR INTERNAMENTE obtiene todos los registros que son comunes entre ambas tablas en función de la clave externa

LEFT JOIN obtiene todos los registros de la tabla vinculada IZQUIERDA pero si ha seleccionado algunas columnas de la tabla DERECHO, si no hay registros relacionados, estas columnas contendrán NULO

DERECHO ÚNASE es como el anterior, pero obtiene todos los registros en la tabla DERECHA

FULL JOIN obtiene todos los registros de ambas tablas y pone NULL en las columnas donde los registros relacionados no existen en la tabla opuesta


530
2018-04-18 20:28



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

Hay diferentes tipos de combinaciones disponibles en SQL:

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

LEFT JOIN: devuelve todas las filas de la tabla de la izquierda, incluso si no hay coincidencias en la tabla correcta.

DERECHO ÚNASE: devuelve todas las filas de la tabla correcta, incluso si no hay coincidencias en la tabla de la izquierda.

FULL JOIN: Combina los resultados de las combinaciones externas izquierda y derecha.

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

SELF JOIN: se usa para unir una tabla a sí mismo como si la tabla fuera dos tablas, cambiando temporalmente el nombre de al menos una tabla en la instrucción SQL.

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

Podemos tomar cada una de las primeras cuatro 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, 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;

Aplicarlo 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

LEFT JOIN

Nota : dará todas las filas seleccionadas en la Tabla A, 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;

Aplicarlo 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

DERECHO ÚNASE

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;

Aplicarlo 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

FULL JOIN

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;

Aplicarlo 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 (IZQUIERDA, DERECHA o LLENA) OUTER se une, el orden importa

Mejor ir a ver esto Enlazar le dará detalles interesantes sobre el orden de unir


493
2018-02-25 12:40