Saltar la navegación

9.- Otras consultas multitablas: Unión, Intersección y diferencia de consultas.

Caso práctico

Ana
Ministerio de Educación (Uso educativo nc)



Ana le cuenta a Carlos que ya tienen terminado casi todo el trabajo, pero que no le importa enseñarle otros tipos de consultas que no han necesitado utilizar en esta ocasión pero que es conveniente conocer, se refiere al uso de uniones, intersecciones y diferencia de consultas. Le explicará que es muy parecido a la teoría de conjuntos que recordará de haber terminado hace poco sus estudios.

Cubo creado con unión de distintas piezas.
Stockbyte (Uso educativo nc)


Seguro que cuando empieces a trabajar con bases de datos llegará un momento en que dispongas de varias tablas con los mismos datos guardados para distintos registros y quieras unirla en una única tabla. ¿Esto se puede hacer? Es una operación muy común junto a otras. Al fin y al cabo, una consulta da como resultado un conjunto de filas y con conjuntos podemos hacer, entre otras, tres tipos de operaciones comunes como son: unión, intersección y diferencia.

UNION: combina las filas de un primer SELECT con las filas de otro SELECT, desapareciendo las filas duplicadas.

INTERSECT: examina las filas de dos SELECT y devolverá aquellas que aparezcan en ambos conjuntos. Las filas duplicadas se eliminarán.

MINUS: devuelve aquellas filas que están en el primer SELECT pero no en el segundo. Las filas duplicadas del primer SELECT se reducirán a una antes de comenzar la comparación.

Para estas tres operaciones es muy importante que utilices en los dos SELECT el mismo número y tipo de columnas y en el mismo orden.

Estas operaciones se pueden combinar anidadas, pero es conveniente utilizar paréntesis para indicar que operación quieres que se haga primero.

Veamos un ejemplo de cada una de ellas.

UNIÓN: Obtener los nombres y ciudades de todos los proveedores y clientes de Alemania.

SELECT NombreCia, Ciudad FROM  PROVEEDORES WHERE Pais = 'Alemania' 
UNION 
SELECT NombreCia, Ciudad  FROM CLIENTES WHERE Pais = 'Alemania';

INTERSECCIÓN: Una academia de idiomas da clases de inglés, frances y portugues; almacena los datos de los alumnos en tres tablas distintas una llamada "ingles", en una tabla denominada "frances" y los que aprenden portugues en la tabla "portugues". La academia necesita el nombre y domicilio de todos los alumnos que cursan los tres idiomas para enviarles información sobre los exámenes.

SELECT nombre, domicilio FROM ingles INTERSECT
SELECT nombre, domicilio FROM frances INTERSECT
SELECT nombre, domicilio FROM portugues;


DIFERENCIA: Ahora la academia necesita el nombre y domicilio solo de todos los alumnos que cursan inglés (no quiere a los que ya cursan portugués pues va a enviar publicidad referente al curso de portugués).

SELECT nombre, domicilio FROM INGLES
MINUS 
SELECT nombre,domicilio FROM PORTUGUES;

Autoevaluación

Pregunta

¿Cuáles de las siguientes afirmaciones son correctas?

Respuestas

La unión combina las filas de un primer SELECT con las filas de otro SELECT, desapareciendo las filas duplicadas.

La diferencia devuelve aquellas filas que están en el primer SELECT pero no en el segundo. Correcta.

La intersección examina las filas de un SELECT y de otro y devolverá aquellas que aparezcan en ambos conjuntos.

En uniones, intersecciones y diferencias, los dos SELECT deben tener el mismo número pero no tienen por qué tener el mismo tipo de columnas.

Retroalimentación