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.