SQL: autouniones

Rodrigo Ricardo Publicado el 14 noviembre, 2020 3 minutos y 18 segundos de lectura

Autounión

Una autounión hace lo que su nombre implica: compara una tabla consigo misma. No es una combinación verdadera, ya que no está conectando realmente una mesa consigo misma. Sin embargo, es una forma de comparar los datos de la tabla con otros datos de la tabla. Esto es útil cuando la tabla es muy grande y tiene muchas columnas y datos. Otros usos incluyen totales acumulados y recuentos acumulados.

Además, puede utilizar una autocombinación para devolver un subconjunto de datos que es posible que deban extraerse de la tabla y guardar en una tabla diferente, especialmente si la tabla se vuelve grande y difícil de manejar.

Si queremos saber qué empleados tienen el mismo código de puesto:

SELECCIONE DISTINCT e1.employeeName, e1.jobTitle, e1.jobCode 
FROM Employee AS e1, Employee AS e2
DONDE e1.jobCode = e2.jobCode
Y e1.employeeName <> e2.employeeName
ORDER BY e1.jobCode, e1.employeeName;

La cláusula DISTINCT en la declaración garantiza que solo obtenga una fila por valor devuelto. Como está consultando la misma tabla dos veces, es posible que obtenga filas de datos duplicadas. No es necesariamente incorrecto, pero puede causar confusión cuando solo desea una fila por coincidencia.

Alias

Aunque la consulta se está completando en una sola tabla, necesitamos hacer que el sistema actúe como si estuviera trabajando en más de una tabla. Hemos proporcionado alias para cada instancia de la tabla: e1 y e2. Es una forma de indicar que desea consultar a Empleado dos veces. Si no especificamos estos alias, el sistema no podría completar la consulta.

A continuación, hay otro paso que completa el ciclo. Observe el uso del AS en esta declaración. Como estamos consultando la misma tabla, tenemos que decirle a SQL qué partes evaluar. ¡Los alias nos ayudan a nosotros (y al sistema de base de datos) a mantener todo en orden!

  SQL: instrucción CASE

Otros ejemplos

Hay algunas otras aplicaciones para una autocomisión. Estos incluyen recuentos acumulados y totales acumulados.

Cuenta corriente

En este ejemplo, creamos un recuento continuo para contar elementos en función de la comparación de autouniones.

SELECCIONE count (p1.itemID) AS itemNum, p1.itemName, p1.itemID 
FROM Products p1
  INNER JOIN Products p2
  ON p1.itemID> = p2.itemID
GROUP BY p1.itemName, p1.itemID
ORDER BY 1;

El resultado de la consulta sería similar al siguiente, con la columna itemNum como la columna temporal creada para mostrar el recuento en ejecución de la base de datos:

itemNumnombre del árticuloIdentificación del artículo
1FedoraFEDE
2PanamáPANA
3Jugador de bolosCUENCO
4CanotiéBOTE

Totales acumulados

A veces es útil mostrar un total acumulado de un campo determinado. No tendría sentido almacenar los totales como un campo real en la tabla. El siguiente ejemplo muestra una consulta de muestra que crea un total acumulado de horas trabajadas para un conjunto de empleados. Nombraremos el campo total acumulado con letras mayúsculas para asegurarnos de que se destaque como un campo calculado.

SELECCIONE e1.employeeID, e1.jobCode, e1.checkDate 
   SUM (e2.hoursWorked) AS RunningTOTAL
FROM Employee AS e1, Employee AS e2
WHERE e2.checkDate <e1.checkDate
GROUP BY e1.employeeID, e1.checkDate;

El resultado de la consulta se vería así:

ID de empleadocódigo de TrabajoEjecutandoTOTAL
123085A202738,75
143585B505772.25
156580B505790,75
203548A6550130,00
215687A6550175,50

Resumen de la lección

Una autocombinación es una combinación que une (compara) una tabla consigo misma. Para crear una autocombinación, usa un alias para representar la parte de la tabla que se consulta. Por ejemplo, se podría hacer referencia a la tabla Empleado mediante los alias e1 y e2. Utilice la cláusula DISTINCT en la instrucción SELECT para asegurarse de que se devuelva una fila de datos para cada coincidencia. Las autouniones son buenas para consultar tablas grandes, buscar patrones y crear recuentos y totales acumulados.

Continua con:

  1. Ataque de inyección SQL: definición, tipos y ejemplos
  2. Diseño para bases de datos y SQL
  3. ¿Qué es Microsoft SQL Server?
  4. ¿Qué es SQL Server Management Studio (SSMS)?
  5. Aplicación práctica para la introducción a SQL: instalación de datos de muestra para MySQL
  6. Instalación de SQL Server Express Edition para la programación de bases de datos

Explora más sobre este tema

Selecciona un tema y sigue aprendiendo...

sql
Rodrigo Ricardo
Rodrigo Ricardo Editor y fundador