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!
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:
| itemNum | nombre del árticulo | Identificación del artículo |
|---|---|---|
| 1 | Fedora | FEDE |
| 2 | Panamá | PANA |
| 3 | Jugador de bolos | CUENCO |
| 4 | Canotié | 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 empleado | código de Trabajo | EjecutandoTOTAL |
|---|---|---|
| 123085 | A2027 | 38,75 |
| 143585 | B5057 | 72.25 |
| 156580 | B5057 | 90,75 |
| 203548 | A6550 | 130,00 |
| 215687 | A6550 | 175,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:
- Ataque de inyección SQL: definición, tipos y ejemplos
- Diseño para bases de datos y SQL
- ¿Qué es Microsoft SQL Server?
- ¿Qué es SQL Server Management Studio (SSMS)?
- Aplicación práctica para la introducción a SQL: instalación de datos de muestra para MySQL
- 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...
