sql >> Base de Datos >  >> RDS >> SQLite

Unión automática de SQLite

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 ciudad
  • e.firstname <> e2.firstname AND e1.lastname <> e2.lastname para asegurarse de que e1 y e2 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.