66 - Intersección |
Continuamos aprendiendo las operaciones de conjuntos. Aprendimos "union" y "union all", ahora veremos "intersect".
Como cualquier otra operación de conjuntos, "intersect" se emplea cuando los datos que se quieren obtener pertenecen a distintas tablas y no se puede acceder a ellos con una sola consulta.
Del mismo modo, las tablas referenciadas DEBEN tener tipos de datos similares, la misma cantidad de campos y el mismo orden de campos en la lista de selección de cada consulta que intervenga en la intersección.
"intersect" devuelve la intersección de las consultas involucradas; es decir, el resultado retornará los registros que se encuentran en la primera y segunda consulta (y demás si las hubiere), o sea, los registros que todas las consultas tienen en común.
Sintaxis:
SENTENCIASELECT1 intersect SENTENCIASELECT2;
No olvide que las consultas DEBEN tener el mismo numero de valores retornados y los valores deben ser del mismo tipo.
Una academia de enseñanza de idiomas da clases de inglés, frances y portugues; almacena los datos de los alumnos que estudian inglés en una tabla llamada "ingles", los que están inscriptos en "francés" 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 una tarjeta de descuento.
Para obtener los datos necesarios de las tres tablas en una sola consulta necesitamos realizar una intresección:
select nombre, domicilio from ingles intersect select nombre, domicilio from frances intersect select nombre, domicilio from portugues;
El primer "select" devuelve el nombre y domicilio de todos los estudiantes de inglés; el segundo, el nombre y domicilio de todos los inscriptos a francés y la tercera los mismos campos de los alumnos de "portugues". Esta sentencia de intersección retornará los registros que coinciden en las tres consultas "select".
"intersect" puede combinarse con la cláusula "order by".