jueves, 7 de julio de 2016

Receta T-SQL No. 4-15: ¿Cómo Comparar los Registros de Dos Tablas?

Índice

1. Introducción
2. Palabras Clave
3. Problema
4. Solución
5. Discusión de la Solución
5.1 Operador UNION
6. Práctica: Comparación de Registros de Dos Tablas
7. Conclusiones
8. Literatura & Enlaces

1. Introducción

Esta receta T-SQL constituye la última de la serie de Consultas sobre Múltiples Tablas. Aquí se explica el proceso de comparación de dos tablas en búsqueda de diferencia entre sus registros. En la sección práctica se escribe la consulta más extensa que se haya escrito en esta serie de recetas T-SQL, sin embargo el propósito es dejar claro el concepto global, aunque con un enfoque práctico, de este proceso que puede emerger como requerimiento en el tratamiento de datos en una aplicación específica.

2. Palabras Clave

  • Aplicación
  • Registro
  • Tabla

3. Problema

Comparar dos tablas en búsqueda de diferencia entre registros.

4. Solución

Usar los operadores GROUP BY, HAVING y UNION para determinar la existencia de filas duplicadas.

5. Discusión de la Solución

5.1 Operador UNION

[Nota: En Receta T-SQL No. 4-11: ¿Cómo Eliminar Duplicados en una Unión? se describe el uso de este operador de unión de conjuntos de registros.]

Este operador es clave para comparar los registros de dos tablas. En la siguiente sección práctica se presenta su uso: se unen las comparaciones de la tabla 1 frente la tabla 2, y viceversa.

6. Práctica: Comparación de Registros de Dos Tablas

El primer paso para esta sección práctica es crear una copia de la tabla Person.Password de la base de datos AdventureWorks.

SELECT *
INTO Person.CopiaPassword
FROM Person.Password;

El segundo paso consiste en definir la consulta para comparar los registros entre las dos tablas, y luego reportar las diferencias encontradas: 

En las líneas 1-24 se crea la primera consulta que determina si existen registros duplicados de la tabla Password respecto CopiaPassword. El proceso complementario, es decir de la tabla CopiaPassword respecto Password se efectúa en las líneas 26-49.


Cuando este código es ejecutado en Microsoft SQL Management Studio se obtiene: 
Ejecución consulta de comparación tablas
Figura 1. Ejecución consulta de comparación tablas.

Nótese que no hay diferencia alguna debido a que CopiaPassword es idéntica a Password.


Para comprobar que la consulta T-SQL anterior efectivamente está realizando la comparación de registros se añade los siguientes cambios sobre ambas tablas: 

UPDATE Person.CopiaPassword
SET PasswordSalt = 'EP9TKLO'
WHERE BusinessEntityID IN (9783, 221);

UPDATE Person.Password
SET PasswordSalt = 'UDMWI11'
WHERE BusinessEntityID IN (42, 4242);

INSERT INTO Person.CopiaPassword
SELECT *
FROM Person.CopiaPassword
WHERE BusinessEntityID = 1;
Cambios en las tablas Password y CopiaPassword
Figura 2. Cambios en las tablas Password y CopiaPassword.

Ahora se ejecuta de nuevo la sentencia T-SQL del archivo ComparacionTablas.sql
Ejecución consulta de comparación tablas (segunda ejecución)
Figura 3. Ejecución consulta de comparación tablas (segunda ejecución).

El lector observará que en la columna BusinessEntityID se enlistan los IDs que se diferencian entre las dos tablas Password y CopiaPassword. Por otra parte, en Contador Duplicados se muestra el número de duplicados de un registro para una tabla en particular.

7. Conclusiones

Se ha comprendido cómo comparar los registros de dos tablas. Al principio este proceso puede resultar complicado debido a la complejidad que puede emerger a partir de la longitud de la consulta, pero al ponerlo en práctica en aplicaciones particulares se afianzará su entendimiento.

Se ha alcanzado el final de las recetas T-SQL centradas en Consultas sobre Múltiples Tablas. A partir de la siguiente serie se tratará otro tópico importante en el diseño de consultas: Agrupación y Resumen.

8. Literatura & Enlaces

Brimhall, J., Dye, D., Gennick, J., Roberts, A., Sheffield, W. (2012). SQL Server 2012 T-SQL Recipes - A Problem-Solution Approach. United States: Apress.
Receta T-SQL No. 4-11: ¿Cómo Eliminar Duplicados en una Unión? (2016, julio 7). Recuperado desde: https://ortizol.blogspot.com.co/2016/06/receta-t-sql-no-4-11-como-eliminar-duplicados-en-una-union.html


V

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.