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.
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.