SQL INTERSECT: Combina Dos o Más Consultas

El comando SQL INTERSECT se usa para obtener los resultados de 2  o más declaraciones SELECT que se cruzan. Este comando se utiliza para recuperar los registros comunes a 2 consultas. Esto puede ser útil cuando se trata de averiguar si hay datos similares en 2 tablas separadas.

A saber: para utilizar SQL INTERSECT correctamente es necesario que las 2 consultas devuelvan el mismo número de columnas, con los mismos tipos y en el mismo orden.

Sintaxis sql intersect 

La sintaxis para usar comando sql intersect es la siguiente:

SELECT * FROM `table1`
INTERSECT
SELECT * FROM `table2`

En este ejemplo, las 2 tablas deben ser similares (mismas columnas, mismos tipos y mismo orden). El resultado corresponderá a los registros que existen en la tabla 1 y la tabla 2.

Explicación lógica de sql intersect

La intersección de 2 conjuntos table1 y table2 corresponde a los elementos que están presentes en table1 y en table2, y sólo a aquellos. Esto se puede representar mediante un diagrama explicativo simple o la intersección de table1 y table2 corresponde al área en azul.

SQL INTERSECT

Hay ciertas cosas de las que debe asegurarse antes de usar el operador INTERSECT que se enumeran a continuación:

Ambas instrucciones de selección deben contener el mismo número de columnas o expresiones. Además, el orden en que se mencionan debe ser el mismo.
El tipo de datos de las columnas o los valores de las expresiones de las columnas correspondientes de ambas tablas deben ser similares y compatibles entre sí.

Ejemplo Intersección de 2 conjuntos

Tomemos el ejemplo de 2 tiendas que pertenecen al mismo grupo. Cada tienda tiene su propia mesa de clientes.

La tabla de la tienda n°1 es «man1_client»:

nombreciudaddate_naissance
LeoParís2019-03-06
MaríaParís1993-07-03
SofíaMarsella1986-02-22
JoséParís1976-11-24

La tabla de la tienda n°2 es «man2_client»:

nombreciudaddate_naissance
MarionLyon2019-03-06
PaulLyon2020-07-03
MaríaParís1993-07-03
JoséParís1976-11-24

Para obtener la lista de clientes que están presentes de forma idéntica en estas 2 tablas, con SQL INTERSECT de la siguiente manera:

SELECT * FROM `man1_client`
INTERSECT
SELECT * FROM `man2_client`

Resultado:

nombreciudaddate_naissance
MaríaParís1993-07-03
JoséParís1976-11-24

El resultado presenta 2 registros, estos son los clientes que están tanto en la tabla «man1_client» como en la tabla «man2_client». En algunos sistemas, tal solicitud permite detectar errores y registrar solo en un lugar la misma información.

Similar al operador UNION en SQL, incluso el operador INTERSECT en microsoft sql server tiene que cumplir con las siguientes dos reglas para una ejecución exitosa:

El número y el orden de las columnas en ambas consultas tiene que ser el mismo. Los tipos de datos de las columnas correspondientes de ambas consultas seleccionadas deben ser compatibles entre sí.

Resultado del operador SQL INTERSECT

Si tenemos do conjunto uno tabla1=A-B-C y el otro TABLA2=B-C-D a continuación mostrare los detalle cuando cruzamos estos dos conjunto en una consulta con SQL INTERSECT. 

  • Para saber cómo usar el diagrama, considere que hay cierto conjunto de resultados recuperado de la consulta 1, digamos Tabla1, y otro conjunto de resultados recuperado de la consulta 2 es Tabla2.
  • El contenido del conjunto de resultados se muestra en el siguiente resultado. Cuando ambas consultas se cruzan, solo los datos comunes presentes en los resultados Tabla1 y Tabla2 se obtienen en los datos Tabla1 INTERSECT Tabla2.
  • Como B y C son comunes tanto en Tabla1 como en Tabla2, ambos registros se obtienen en el resultado interceptado.
  • Como A no está presente en Tabla2 y D no está presente en Tabla1, tanto A como D se omiten en el conjunto de resultados de Tabla1 INTERSECT Tabla2.

Cuando se cruzan dos conjuntos de resultados de consultas, el conjunto de resultados final consta de registros comunes y únicos que se recuperan de los conjuntos de resultados de ambas consultas.

Deja un comentario