Resumen :en este tutorial, aprenderá acerca de un tipo especial de unión llamada autounión de SQLite que le permite unir una tabla a sí misma.
Tenga en cuenta que debe estar familiarizado con INNER JOIN
y LEFT JOIN
cláusulas antes de continuar con este tutorial.
Introducción a la autounión de SQLite
La unión automática es un tipo especial de unión que le permite unir una tabla a sí misma usando LEFT JOIN
o INNER JOIN
cláusula. Utiliza la unión automática para crear un conjunto de resultados que une las filas con las otras filas dentro de la misma tabla.
Debido a que no puede hacer referencia a la misma tabla más de una en una consulta, debe usar un alias de tabla para asignarle un nombre diferente cuando usa la autocombinación.
La autocombinación compara valores de las mismas o diferentes columnas en la misma tabla. Solo una tabla está involucrada en la autocombinación.
A menudo utiliza la autounión para consultar la relación padre/hijo almacenada en una tabla o para obtener totales acumulados.
Ejemplos de autounión de SQLite
Usaremos los employees
tabla en la base de datos de muestra para demostración.

Los employees
La tabla almacena no solo los datos de los empleados, sino también los datos de la organización. El ReportsTo
columna especifica la relación de informes entre los empleados.
Si un empleado informa a un gerente, el valor de ReportsTo
columna de la fila del empleado es igual al valor de EmployeeId
columna de la fila del gerente. En caso de que un empleado no informe a nadie, el ReportsTo
la columna es NULL
.
Para obtener información sobre quién depende directamente de quién, utilice la siguiente declaración:
SELECT m.firstname || ' ' || m.lastname AS 'Manager',
e.firstname || ' ' || e.lastname AS 'Direct report'
FROM employees e
INNER JOIN employees m ON m.employeeid = e.reportsto
ORDER BY manager;
Code language: SQL (Structured Query Language) (sql)
Pruébalo

La declaración usó el INNER JOIN
cláusula para unirse a los employees
a sí mismo. Los employees
La mesa tiene dos roles:empleados y gerentes.
Porque usamos INNER JOIN
cláusula para unirse a los employees
tabla a sí mismo, el conjunto de resultados no tiene la fila cuya columna de administrador contiene un NULL
valor.
Tenga en cuenta que el operador de concatenación ||
concatena varias cadenas en una sola cadena. En el ejemplo, usamos el operador de concatenación para obtener los nombres completos de los empleados concatenando el nombre, el espacio y el apellido.
En caso de que quiera consultar al CEO que no le reporta a nadie, debe cambiar el INNER JOIN
cláusula a LEFT JOIN
cláusula en la consulta anterior.

Andrew Adams
es el director general porque no denuncia a nadie.
Puede utilizar la técnica de autocombinación para encontrar los empleados ubicados en la misma ciudad que la siguiente consulta:
SELECT DISTINCT
e1.city,
e1.firstName || ' ' || e1.lastname AS fullname
FROM
employees e1
INNER JOIN employees e2 ON e2.city = e1.city
AND (e1.firstname <> e2.firstname AND e1.lastname <> e2.lastname)
ORDER BY
e1.city;
Code language: SQL (Structured Query Language) (sql)
Pruébalo

La condición de unión tiene dos expresiones:
e1.city = e2.city
para asegurarse de que ambos empleados estén ubicados en la misma ciudade.firstname <> e2.firstname AND e1.lastname <> e2.lastname
para asegurarse de quee1
ye2
no son el mismo empleado con el supuesto de que no hay empleados que tengan el mismo nombre y apellido.
En este tutorial, le mostramos cómo usar la técnica de autounión de SQLite para unir una tabla a sí misma.