Oracle/PLSQL: operador INTERSECT

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: operador INTERSECT

Este tutorial de Oracle describe cómo usar Oracle operador INTERSECT Con sintaxis y ejemplos.

describir

El operador Oracle INTERSECT se utiliza para devolver los resultados de 2 o más declaraciones SELECT. Sin embargo, solo devuelve todas las filas seleccionadas por la consulta o el conjunto de datos. Si existe un registro en una consulta pero no en otra, se omitirá del resultado INTERSECT.

consulta de intersección

explique: Una consulta INTERSECT devolverá registros en el área sombreada en azul. Estos son registros que existen tanto en Dataset1 como en Dataset2.

Cada declaración SELECT en INTERSECT debe tener la misma cantidad de campos en un conjunto de resultados con tipos de datos similares.

sintaxis

La sintaxis del operador INTERSECT en Oracle/PLSQL es:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
INTERSECT
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

parámetro o parámetro

expresión1, expresión2, … expresión_n La columna o el cálculo que desea recuperar. tabla La tabla de la que desea recuperar registros. Debe aparecer al menos una tabla en la cláusula FROM. La condición WHERE es opcional. Para seleccionar las condiciones que debe cumplir un registro.

notas

  • Ambas instrucciones SELECT deben tener el mismo número de expresiones y tener tipos de datos similares.

Ejemplo: usar una sola expresión

Aquí hay un ejemplo de Oracle INTERSECT que devuelve un campo con el mismo tipo de datos:

SELECT supplier_id
FROM suppliers
INTERSECT
SELECT supplier_id
FROM orders;

En este ejemplo de INTERSECT, si el Id. de proveedor aparece en la tabla Proveedores y pedidos, aparecerá en su conjunto de resultados.

Ahora, compliquemos aún más nuestro ejemplo agregando una condición WHERE a la consulta INTERSECT.

SELECT supplier_id
FROM suppliers
WHERE supplier_id <= 99
INTERSECT
SELECT supplier_id
FROM orders
WHERE quantity > 25;

En este ejemplo, se agregó una cláusula WHERE a cada conjunto de datos. El primer conjunto de datos se filtró para devolver solo registros en la tabla de proveedores con ID de proveedor menores o iguales a 99. El segundo conjunto de datos se ha filtrado para que solo se devuelvan los registros de la tabla de pedidos con una cantidad superior a 25.

Ejemplo: uso de varias expresiones

A continuación, veamos un ejemplo de cómo usar el operador INTERSECT en Oracle para devolver varias columnas.

Por ejemplo:

SELECT contact_id, last_name, first_name
FROM contacts
WHERE first_name <> 'John'
INTERSECT
SELECT customer_id, last_name, first_name
FROM customers
WHERE customer_id >= 89;

En este ejemplo de INTERSECT, la consulta devuelve registros en la tabla de contactos donde los valores de contact_id, last_name y first_name coinciden con los valores de customer_id, last_name y first_name en la tabla de clientes.

Cada conjunto de datos tiene una condición DONDE para filtrar aún más los resultados para devolver solo registros de contactos donde el nombre no es John. Si customer_id es mayor o igual a 89, se devuelven los registros de la tabla de clientes.

Ejemplo: uso de ORDEN POR

El siguiente es un ejemplo de INTERSECT usando la cláusula ORDER BY:

SELECT supplier_id, supplier_name
FROM suppliers
WHERE supplier_id > 500
INTERSECT
SELECT company_id, company_name
FROM companies
WHERE company_name in ( 'Apple', 'Microsoft', 'Oracle' )
ORDER BY 2;

Debido a que los nombres de las columnas difieren entre las dos sentencias SELECT, es más ventajoso referirse a las columnas en la cláusula ORDER BY por su posición en el conjunto de resultados.En este ejemplo, hemos ordenado los resultados por nombre del proveedor/nombre de la empresa en orden ascendente como ORDER BY 2.

Posición n.º 2 del campo Nombre del proveedor/Nombre de la empresa en el conjunto de resultados.

(Visited 15 times, 1 visits today)